gormx

package module
v0.0.0-...-3b89e5a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2024 License: MIT Imports: 15 Imported by: 0

README

gormx

gormx is a gorm helps extension.

document: https://pkg.go.dev/github.com/cnk3x/gormx

Documentation

Index

Constants

View Source
const DEFAULT = "DEFAULT"

Variables

This section is empty.

Functions

func Create

func Create(name string) (*gorm.DB, error)

Create 是一个用于创建数据库连接的方法。 它接受一个数据库名称作为参数,并根据该名称获取数据库配置。 如果没有指定数据库驱动和DSN,则使用默认的SQLite数据库和内存存储。 该方法返回一个*gorm.DB实例和一个错误(如果有的话)。

func Default

func Default() *gorm.DB

Default 返回一个默认的 *gorm.DB 实例,主要用于数据库操作。 该函数尝试通过调用 fetch 函数来获取数据库实例。如果 fetch 函数返回错误, 则构建一个带有错误信息的 *gorm.DB 实例,并确保其内部状态正确初始化。

func Get

func Get(name string) (*gorm.DB, error)

Get 是一个用于获取数据库连接的函数。 它接受一个数据库名称作为参数,并返回一个指向 gorm.DB 的指针和一个错误值。 该函数主要负责调用 fetch 函数来实际进行数据库连接的获取。

参数:

name - 指定要连接的数据库名称。

返回值:

*gorm.DB - 返回一个指向 gorm.DB 的指针,代表数据库连接。
error - 如果获取数据库连接时发生错误,返回错误信息。

func Open

func Open(driver, dsn string, opts ...gorm.Option) (*gorm.DB, error)

Open 是一个用于初始化数据库连接的函数。 它接受数据库驱动名称、数据源名称(DSN)以及可选的 GORM 配置选项作为参数。 函数返回一个 *gorm.DB 实例,用于与数据库进行交互,或者返回一个错误,如果连接失败。

func RegisterDriver

func RegisterDriver(name string, dialect DialectOpen, alias ...string)

RegisterDriver 注册一个新的数据库驱动及其方言。 该函数接受驱动名称、方言实现以及可选的别名列表。 主要用于在数据库驱动和其对应方言之间建立映射,同时支持通过别名来引用相同的方言。

参数:

name - 驱动的唯一名称,用作在drivers map中的键。
dialect - DialectOpen类型,表示特定数据库的方言实现。
alias - 可变参数,包含驱动的别名,每个别名也将与主驱动名称建立映射。

func SetEnvPrefix

func SetEnvPrefix(prefix string)

SetEnvPrefix 设置环境变量的前缀。 此函数允许用户在全局范围内更改环境变量的前缀,以便在大型项目或复杂环境中更好地管理配置。

参数:

prefix: 要设置的新环境变量前缀。这应该是一个简洁且具有描述性的字符串,用于标识项目或应用程序的环境变量。

func SetOptionsFunc

func SetOptionsFunc(fn func(name string) Options)

SetOptionsFunc 是一个用于设置选项的函数。 它接受一个函数作为参数,该函数应接受一个字符串参数 name,并返回一个 Options 对象。 当需要动态设置或获取配置选项时,可以通过调用 SetOptionsFunc 来实现。 这种设计允许在运行时灵活地调整或定制选项,而无需在编译时固定这些选项。

参数:

fn - 一个函数,根据提供的名称返回相应的配置选项。

设置:

getOptions - 通过调用 fn,可以动态地获取或设置配置选项。

func SingleWrap

func SingleWrap[T any](get func(string) (T, error)) func(string) (T, error)

SingleWrap 是一个函数装饰器,用于缓存和去重处理。 它接受一个函数 get,该函数通过名称获取一个类型为 T 的实例。 返回一个新的函数,该函数会缓存 get 的调用结果,以避免重复获取相同的实例。

func Sort

func Sort[K cmp.Ordered, S cmp.Ordered](tx *gorm.DB, values map[K]S) (rowsUpdated int64, err error)

Sort 函数用于更新数据库中的排序信息。

该函数接收一个 *gorm.DB 类型的参数 tx,代表数据库事务, 以及一个映射类型 values,其键和值都实现了 Ordered 接口, 用于指定需要更新排序信息的实体及其新的排序值。 函数返回更新的行数和遇到的错误(如果有)。

func SortExec

func SortExec[K cmp.Ordered, S cmp.Ordered](tx *gorm.DB, values map[K]S, keyColumn, sortColumn string) *gorm.DB

SortExec 根据给定的键值对对数据库中的记录进行排序更新。

该函数使用 GORM 进行数据库操作,利用类型参数 K 和 S 来确保键和值的有序性。

参数:

tx - GORM 的数据库连接对象,如果为 nil,则使用默认连接。
values - 是一个映射,其键和值分别对应数据库记录中的键和排序值。
keyColumn 和 sortColumn - 是数据库表中的列名,分别用于标识键列和排序列。

函数返回更新操作后的 GORM DB 对象。

func SortPrep

func SortPrep[K cmp.Ordered, S cmp.Ordered](values map[K]S, kc, sc clause.Column) (where clause.Expr, value clause.Expr)

SortPrep 为排序前的准备操作生成 SQL 表达式。

该函数根据提供的映射,创建一个 CASE 表达式来指定排序的值,并生成 WHERE 表达式来过滤结果。

参数:

values - 一个映射,其键和值将用于生成排序表达式。
kc - 一个表示排序键列的 clause.Column。
sc - 一个表示默认排序列的 clause.Column。

返回值:

where - 一个 clause.Expr,用于在查询中使用,以过滤出需要排序的记录。
value - 一个 clause.Expr,表示 CASE 表达式,用于指定排序的值。

Types

type DialectOpen

type DialectOpen = func(string) gorm.Dialector

type Int

type Int interface {
	~int | ~int8 | ~int16 | ~int32 | ~int64
}

type Integer

type Integer interface{ Uint | Int }

type Options

type Options struct {
	// Driver 是数据库驱动的名称,例如 "mysql" 或 "postgres"。
	// 这个字段是可选的,如果不需要指定驱动或者使用默认驱动,可以留空。
	Driver string `json:"driver,omitempty"`

	// DSN 是数据源名称(Data Source Name),包含了连接数据库所需的详细信息。
	// 这个字段的格式依赖于具体的数据库驱动,通常包括用户名、密码、主机和数据库名等信息。
	// 和 Driver 一样,这个字段也是可选的,取决于是否需要在连接时指定这些详细信息。
	DSN string `json:"dsn,omitempty"`

	// Debug 指示是否启用调试模式。
	// 当设置为 true 时,数据库操作的相关信息会被记录下来,通常用于开发或者调试阶段。
	// 在生产环境中,通常将这个值设置为 false,以避免不必要的性能开销。
	Debug bool `json:"debug,omitempty"`
}

Options 定义了数据库连接的配置选项。 它是一个结构体,包含了连接数据库所需的信息以及调试模式的配置。

type Scope

type Scope func(*gorm.DB) *gorm.DB

Scope 是一个定义了如何对数据库查询进行条件化修改的函数类型。 它接收一个 *gorm.DB 类型的参数,代表 GORM 的数据库连接实例, 并返回一个经过修改的 *gorm.DB 类型的实例。 使用 Scope 可以动态地修改数据库查询,例如添加额外的条件、排序规则等。

func Like

func Like(column, q string) Scope

Like 创建一个查询范围,用于在数据库查询中添加LIKE条件。 该函数主要用于实现模糊查询,通过在指定列中搜索包含查询字符串q的项。

参数:

column: 数据库列名,表示要在哪一列中进行模糊查询。
q: 查询字符串,表示要搜索的关键字。

返回值:

Scope: 返回一个函数,该函数接收一个*gorm.DB实例,并返回添加了LIKE条件的*gorm.DB实例。

func OrderBy

func OrderBy(orderBy string, def string) Scope

OrderBy 根据传入的排序参数构建排序查询。 该函数接收两个参数:orderBy 是用户指定的排序参数,def 是默认的排序参数。 它返回一个 Scope 函数,该函数可以应用于 gorm.DB 对象以添加排序条件。

func Paging

func Paging[T1 Integer, T2 Integer, T3 Integer](page T1, size T2, defSize ...T3) Scope

Paging 是一个泛型函数,用于创建一个分页查询的范围。 它接受页码(page)、每页大小(size)和一个可选的默认每页大小(defSize)作为参数。 该函数返回一个 Scope 函数,该函数对传入的 *gorm.DB 实例应用分页逻辑。

func Prefix

func Prefix(col, q string) Scope

Prefix 生成一个查询范围,用于在指定列上应用前缀匹配 它允许通过在查询字符串后添加百分号来匹配列值的前缀

参数:

col: 要应用前缀匹配的数据库列名
q: 要查询的前缀字符串

返回值:

Scope: 一个函数,接受一个*gorm.DB实例,返回应用了前缀匹配条件的*gorm.DB实例

func Suffix

func Suffix(col, q string) Scope

Suffix 生成一个查询范围,用于在指定列上应用后缀匹配 它允许通过在查询字符串后添加百分号来匹配列值的后缀

参数:

column: 要应用后缀匹配的数据库列名
q: 要查询的后缀字符串

返回值:

Scope: 一个函数,接受一个*gorm.DB实例,返回应用了后缀匹配条件的*gorm.DB实例

type SortOptions

type SortOptions struct {
	Table      any    // 表名或模型。可以是表名或模型结构体。
	KeyColumn  string // 键列名,用于标识需要排序的记录,默认为主键。
	SortColumn string // 排序列名,用于指定排序依据的列,默认为 `sort`。
}

SortOptions 定义了排序选项的结构体。 主要用于指定对数据库表或模型进行操作所需的排序相关信息。

type Uint

type Uint interface {
	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL