data

package module
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2024 License: MIT Imports: 30 Imported by: 5

README

data 数据库ORM组件

包:"github.com/farseer-go/data"

模块:data.Module

go-version Build

概述

data组件提供数据库ORM操作,将数据库多张表组织到一个上下文中。并使用统一的./farseer.yaml配置

目前orm底层的组件使用的是gorm,data组件主要为了做进一步的封装,使得我们在使用时更加简单易用。

data组件,采用数据库上下文的概念,将多个model组合在一起,方便统一管理。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetContext added in v0.8.0

func GetContext[TDbContext IDbContext](dbName string) *TDbContext

GetContext 获取上下文实例(每次获取都会创建一个实例)

func InitContext

func InitContext[TDbContext IDbContext](repositoryContext *TDbContext, dbName string)

InitContext 数据库上下文初始化 dbName:数据库配置名称 autoCreateTable:true表示自动创建表 同一个上下文生命周期内,共享一个orm client

func NewContext

func NewContext[TDbContext IDbContext](dbName string) *TDbContext

NewContext 数据库上下文初始化 dbName:数据库配置名称,对应./farseer.yaml 中的 Database节点 autoCreateTable:true表示自动创建表 同一个上下文生命周期内,共享一个orm client

func RegisterContext added in v0.8.0

func RegisterContext[TDbContext IDbContext](dbName string, autoCreateTable bool)

RegisterContext 注册上下文(临时生命周期)

func RegisterInternalContext added in v0.9.0

func RegisterInternalContext(key string, configString string)

RegisterInternalContext 注册内部上下文 DataType=mysql,PoolMaxSize=50,PoolMinSize=1,ConnectionString=user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local DataType=sqlserver,PoolMaxSize=50,PoolMinSize=1,ConnectionString=sqlserver://user:123456@127.0.0.1:9930?database=dbname DataType=clickhouse,PoolMaxSize=50,PoolMinSize=1,ConnectionString=tcp://192.168.1.8:9000?database=dbname&username=default&password=&read_timeout=10&write_timeout=20 DataType=postgresql,PoolMaxSize=50,PoolMinSize=1,ConnectionString=host=127.0.0.1 user=user password=123456 dbname=dbname port=9920 sslmode=disable TimeZone=Asia/Shanghai DataType=sqlite,PoolMaxSize=50,PoolMinSize=1,ConnectionString=gorm.db

func ToMap added in v0.9.0

func ToMap(entity any) map[string]any

ToMap PO实体转map

Types

type DataDriver added in v0.13.0

type DataDriver struct {
}

func (*DataDriver) CreateIndex added in v0.13.0

func (receiver *DataDriver) CreateIndex(tableName string, idxName string, idxField IdxField) string

func (*DataDriver) GetDriver added in v0.13.0

func (receiver *DataDriver) GetDriver(connectionString string) gorm.Dialector

type DefaultRepository added in v0.8.0

type DefaultRepository[TPoType any, TDomainObject any] struct {
	// contains filtered or unexported fields
}

func (*DefaultRepository[TPoType, TDomainObject]) Add added in v0.8.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) Add(entity TDomainObject) error

func (*DefaultRepository[TPoType, TDomainObject]) Count added in v0.8.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) Count() int64

func (*DefaultRepository[TPoType, TDomainObject]) Delete added in v0.9.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) Delete(id any) (int64, error)

func (*DefaultRepository[TPoType, TDomainObject]) IsExists added in v0.9.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) IsExists(id any) bool

func (*DefaultRepository[TPoType, TDomainObject]) ToEntity added in v0.8.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) ToEntity(id any) TDomainObject

func (*DefaultRepository[TPoType, TDomainObject]) ToList added in v0.8.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) ToList() collections.List[TDomainObject]

func (*DefaultRepository[TPoType, TDomainObject]) ToPageList added in v0.8.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) ToPageList(pageSize, pageIndex int) collections.PageList[TDomainObject]

func (*DefaultRepository[TPoType, TDomainObject]) Update added in v0.9.0

func (receiver *DefaultRepository[TPoType, TDomainObject]) Update(id any, do TDomainObject) (int64, error)

type DomainSet added in v0.8.0

type DomainSet[TPo any, TDomainObject any] struct {
	TableSet[TPo]
}

DomainSet 比TableSet支持自动绑定领域层的聚合,实现通用的CRUD操作

func (*DomainSet[TPo, TDomainObject]) Init added in v0.8.0

func (r *DomainSet[TPo, TDomainObject]) Init(dbContext *internalContext, param map[string]string)

Init 在反射的时候会调用此方法

type IDataDriver added in v0.11.0

type IDataDriver interface {
	GetDriver(connectionString string) gorm.Dialector
	// CreateIndex 创建索引的SQL
	CreateIndex(tableName string, idxName string, idxField IdxField) string
}

type IDbContext added in v0.8.0

type IDbContext interface{}

IDbContext 数据库上下文

type IInternalContext added in v0.8.0

type IInternalContext interface {
	core.ITransaction
	Original() *gorm.DB
	// ExecuteSql 执行自定义SQL
	ExecuteSql(sql string, values ...any) (int64, error)
	// ExecuteSqlToResult 返回结果(执行自定义SQL)
	ExecuteSqlToResult(arrayOrEntity any, sql string, values ...any) (int64, error)
	// ExecuteSqlToValue 返回单个字段值(执行自定义SQL)
	ExecuteSqlToValue(field any, sql string, values ...any) (int64, error)
}

type IMigratorCreate added in v0.9.0

type IMigratorCreate interface {
	// CreateTable 创建表
	CreateTable() string
}

type IMigratorIndex added in v0.13.0

type IMigratorIndex interface {
	// CreateIndex 创建索引
	CreateIndex() map[string]IdxField
}

type IRepository added in v0.8.0

type IRepository[TDomainObject any] interface {
	// ToEntity 查询实体
	ToEntity(id any) TDomainObject
	// Add 添加实体
	Add(entity TDomainObject) error
	// ToList 获取所有列表
	ToList() collections.List[TDomainObject]
	// ToPageList 分页列表
	ToPageList(pageSize, pageIndex int) collections.PageList[TDomainObject]
	// Count 数量
	Count() int64
	// Update 保存数据
	Update(id any, do TDomainObject) (int64, error)
	// Delete 删除数据
	Delete(id any) (int64, error)
	// IsExists 记录是否存在
	IsExists(id any) bool
}

IRepository 通用的仓储接口,实现常用的CURD

func NewDefaultRepository added in v0.8.0

func NewDefaultRepository[TPoType any, TDomainObject any](table TableSet[TPoType]) IRepository[TDomainObject]

type IdxField added in v0.13.0

type IdxField struct {
	IsUNIQUE bool   // 唯一索引
	Fields   string // 多个用逗号分隔
}

type Module

type Module struct {
}

func (Module) DependsModule

func (module Module) DependsModule() []modules.FarseerModule

func (Module) Initialize

func (module Module) Initialize()

func (Module) PreInitialize

func (module Module) PreInitialize()

type TableSet

type TableSet[Table any] struct {
	// contains filtered or unexported fields
}

TableSet 数据库表操作

func (*TableSet[Table]) Asc

func (receiver *TableSet[Table]) Asc(fieldName string) *TableSet[Table]

Asc 正序

func (*TableSet[Table]) AscIf added in v0.12.0

func (receiver *TableSet[Table]) AscIf(conditional bool, fieldName string) *TableSet[Table]

AscIf 正序,当conditional==true时,使用正序

func (*TableSet[Table]) AscIfElse added in v0.12.0

func (receiver *TableSet[Table]) AscIfElse(conditional bool, trueFieldName string, falseFieldName string) *TableSet[Table]

AscIfElse 正序,当conditional==true时,使用trueFieldName正序,否则使用falseFieldName正序

func (*TableSet[Table]) Clickhouse added in v0.9.0

func (receiver *TableSet[Table]) Clickhouse() *mergeTreeSet

Clickhouse 返回Clickhouse的对象

func (*TableSet[Table]) Count

func (receiver *TableSet[Table]) Count() int64

Count 返回表中的数量

func (*TableSet[Table]) CreateIndex added in v0.13.0

func (receiver *TableSet[Table]) CreateIndex(db *gorm.DB)

func (*TableSet[Table]) CreateTable added in v0.2.0

func (receiver *TableSet[Table]) CreateTable(db *gorm.DB, engine string)

CreateTable 创建表(如果不存在) 相关链接:https://gorm.io/zh_CN/docs/migration.html 相关链接:https://gorm.io/zh_CN/docs/indexes.html

func (*TableSet[Table]) Delete

func (receiver *TableSet[Table]) Delete() (int64, error)

Delete 删除记录

func (*TableSet[Table]) Desc

func (receiver *TableSet[Table]) Desc(fieldName string) *TableSet[Table]

Desc 倒序

func (*TableSet[Table]) DescIf added in v0.12.0

func (receiver *TableSet[Table]) DescIf(conditional bool, fieldName string) *TableSet[Table]

DescIf 倒序,当conditional==true时,使用倒序

func (*TableSet[Table]) DescIfElse added in v0.12.0

func (receiver *TableSet[Table]) DescIfElse(conditional bool, trueFieldName string, falseFieldName string) *TableSet[Table]

DescIfElse 倒序,当conditional==true时,使用trueFieldName倒序,否则使用falseFieldName倒序

func (*TableSet[Table]) ExecuteSql added in v0.8.0

func (receiver *TableSet[Table]) ExecuteSql(sql string, values ...any) (int64, error)

ExecuteSql 执行自定义SQL

func (*TableSet[Table]) ExecuteSqlToArray added in v0.8.0

func (receiver *TableSet[Table]) ExecuteSqlToArray(sql string, values ...any) []Table

ExecuteSqlToArray 返回结果集(执行自定义SQL)

func (*TableSet[Table]) ExecuteSqlToEntity added in v0.8.0

func (receiver *TableSet[Table]) ExecuteSqlToEntity(sql string, values ...any) Table

ExecuteSqlToEntity 返回单个对象(执行自定义SQL)

func (*TableSet[Table]) ExecuteSqlToList added in v0.8.0

func (receiver *TableSet[Table]) ExecuteSqlToList(sql string, values ...any) collections.List[Table]

ExecuteSqlToList 返回结果集(执行自定义SQL)

func (*TableSet[Table]) Expr added in v0.8.0

func (receiver *TableSet[Table]) Expr(field string, expr string, args ...any) (int64, error)

Expr 对字段做表达式操作

exp: Expr("price", "price * ? + ?", 2, 100)
sql: UPDATE "xxx" SET price = price * 2 + 100

func (*TableSet[Table]) Exprs added in v0.9.0

func (receiver *TableSet[Table]) Exprs(fields map[string][]any) (int64, error)

Exprs 对多个字段做表达式操作

exp: Exprs(map[string][]any{"price": {"price - ?", 10}, "count": {"count + ?", 5}})
sql: UPDATE "xxx" SET price = price - 10, count = count + 5

func (*TableSet[Table]) GetBool

func (receiver *TableSet[Table]) GetBool(fieldName string) bool

GetBool 获取单条记录中的单个bool类型字段值

func (*TableSet[Table]) GetDecimal added in v0.9.0

func (receiver *TableSet[Table]) GetDecimal(fieldName string) decimal.Decimal

GetDecimal 获取单条记录中的单个decimal.Decimal类型字段值

func (*TableSet[Table]) GetFloat32

func (receiver *TableSet[Table]) GetFloat32(fieldName string) float32

GetFloat32 获取单条记录中的单个float32类型字段值

func (*TableSet[Table]) GetFloat64

func (receiver *TableSet[Table]) GetFloat64(fieldName string) float64

GetFloat64 获取单条记录中的单个float64类型字段值

func (*TableSet[Table]) GetInt

func (receiver *TableSet[Table]) GetInt(fieldName string) int

GetInt 获取单条记录中的单个int类型字段值

func (*TableSet[Table]) GetLong

func (receiver *TableSet[Table]) GetLong(fieldName string) int64

GetLong 获取单条记录中的单个int64类型字段值

func (*TableSet[Table]) GetPrimaryName added in v0.8.0

func (receiver *TableSet[Table]) GetPrimaryName()

GetPrimaryName 获取主键

func (*TableSet[Table]) GetString

func (receiver *TableSet[Table]) GetString(fieldName string) string

GetString 获取单条记录中的单个string类型字段值

func (*TableSet[Table]) GetTableName

func (receiver *TableSet[Table]) GetTableName() string

GetTableName 获取表名称

func (*TableSet[Table]) Init

func (receiver *TableSet[Table]) Init(dbContext *internalContext, param map[string]string)

Init 在反射的时候会调用此方法

func (*TableSet[Table]) Insert

func (receiver *TableSet[Table]) Insert(po *Table) error

Insert 新增记录

func (*TableSet[Table]) InsertList added in v0.2.0

func (receiver *TableSet[Table]) InsertList(lst collections.List[Table], batchSize int) (int64, error)

InsertList 批量新增记录

func (*TableSet[Table]) IsExists

func (receiver *TableSet[Table]) IsExists() bool

IsExists 是否存在记录

func (*TableSet[Table]) Limit

func (receiver *TableSet[Table]) Limit(limit int) *TableSet[Table]

Limit 限制记录数

func (*TableSet[Table]) Omit added in v0.9.0

func (receiver *TableSet[Table]) Omit(columns ...string) *TableSet[Table]

Omit 忽略字段

func (*TableSet[Table]) Order

func (receiver *TableSet[Table]) Order(value any) *TableSet[Table]

Order 排序

func (*TableSet[Table]) OrderIf added in v0.12.0

func (receiver *TableSet[Table]) OrderIf(conditional bool, value any) *TableSet[Table]

OrderIf 排序,当conditional==true时,使用排序

func (*TableSet[Table]) Original added in v0.8.0

func (receiver *TableSet[Table]) Original() *gorm.DB

Original 返回原生的对象

func (*TableSet[Table]) Select

func (receiver *TableSet[Table]) Select(query any, args ...any) *TableSet[Table]

Select 筛选字段

func (*TableSet[Table]) SetTableName

func (receiver *TableSet[Table]) SetTableName(tableName string) *TableSet[Table]

SetTableName 设置表名

func (*TableSet[Table]) ToArray

func (receiver *TableSet[Table]) ToArray() []Table

ToArray 返回结果集

func (*TableSet[Table]) ToEntity

func (receiver *TableSet[Table]) ToEntity() Table

ToEntity 返回单个对象

func (*TableSet[Table]) ToList

func (receiver *TableSet[Table]) ToList() collections.List[Table]

ToList 返回结果集

func (*TableSet[Table]) ToPageList

func (receiver *TableSet[Table]) ToPageList(pageSize int, pageIndex int) collections.PageList[Table]

ToPageList 返回分页结果集

func (*TableSet[Table]) Update

func (receiver *TableSet[Table]) Update(po Table) (int64, error)

Update 修改记录 如果只更新部份字段,需使用Select进行筛选

func (*TableSet[Table]) UpdateOrInsert added in v0.2.0

func (receiver *TableSet[Table]) UpdateOrInsert(po Table, fields ...string) error

UpdateOrInsert 记录存在时更新,不存在时插入

func (*TableSet[Table]) UpdateValue

func (receiver *TableSet[Table]) UpdateValue(column string, value any) (int64, error)

UpdateValue 修改单个字段

func (*TableSet[Table]) Where

func (receiver *TableSet[Table]) Where(query any, args ...any) *TableSet[Table]

Where 条件

func (*TableSet[Table]) WhereBetween added in v0.12.0

func (receiver *TableSet[Table]) WhereBetween(columnName any, min, max any) *TableSet[Table]

func (*TableSet[Table]) WhereBetweenIf added in v0.12.0

func (receiver *TableSet[Table]) WhereBetweenIf(conditional bool, columnName any, min, max any) *TableSet[Table]

WhereBetweenIf 当conditional==true时,使用between条件(>=and<=)

func (*TableSet[Table]) WhereEq added in v0.12.0

func (receiver *TableSet[Table]) WhereEq(columnName any, args any) *TableSet[Table]

WhereEq 条件

func (*TableSet[Table]) WhereEqIf added in v0.12.0

func (receiver *TableSet[Table]) WhereEqIf(conditional bool, columnName any, args any) *TableSet[Table]

WhereEqIf 当conditional==true时,使用等于条件

func (*TableSet[Table]) WhereGt added in v0.12.0

func (receiver *TableSet[Table]) WhereGt(columnName any, args any) *TableSet[Table]

WhereGt 大于条件

func (*TableSet[Table]) WhereGtIf added in v0.12.0

func (receiver *TableSet[Table]) WhereGtIf(conditional bool, columnName any, args any) *TableSet[Table]

WhereGtIf 当conditional==true时,使用大于条件

func (*TableSet[Table]) WhereGte added in v0.12.0

func (receiver *TableSet[Table]) WhereGte(columnName any, args any) *TableSet[Table]

WhereGte 大于等于条件

func (*TableSet[Table]) WhereGteIf added in v0.12.0

func (receiver *TableSet[Table]) WhereGteIf(conditional bool, columnName any, args any) *TableSet[Table]

WhereGteIf 当conditional==true时,使用大于等于条件

func (*TableSet[Table]) WhereIf added in v0.11.0

func (receiver *TableSet[Table]) WhereIf(conditional bool, query any, args ...any) *TableSet[Table]

WhereIf 当conditional==true时,使用条件

func (*TableSet[Table]) WhereIgnoreLessZero added in v0.8.0

func (receiver *TableSet[Table]) WhereIgnoreLessZero(query any, val int) *TableSet[Table]

WhereIgnoreLessZero 条件,自动忽略小于等于0的

func (*TableSet[Table]) WhereIgnoreNil added in v0.8.0

func (receiver *TableSet[Table]) WhereIgnoreNil(query any, val any) *TableSet[Table]

WhereIgnoreNil 条件,自动忽略nil条件

func (*TableSet[Table]) WhereIn added in v0.12.0

func (receiver *TableSet[Table]) WhereIn(columnName any, args ...any) *TableSet[Table]

func (*TableSet[Table]) WhereInIf added in v0.12.0

func (receiver *TableSet[Table]) WhereInIf(conditional bool, columnName any, args ...any) *TableSet[Table]

WhereInIf 当conditional==true时,使用in条件

func (*TableSet[Table]) WhereLike added in v0.12.0

func (receiver *TableSet[Table]) WhereLike(columnName any, args any) *TableSet[Table]

func (*TableSet[Table]) WhereLikeIf added in v0.12.0

func (receiver *TableSet[Table]) WhereLikeIf(conditional bool, columnName any, args any) *TableSet[Table]

WhereLikeIf 当conditional==true时,使用like条件("%?%"匹配)

func (*TableSet[Table]) WhereLt added in v0.12.0

func (receiver *TableSet[Table]) WhereLt(columnName any, args any) *TableSet[Table]

WhereLt 小于条件

func (*TableSet[Table]) WhereLtIf added in v0.12.0

func (receiver *TableSet[Table]) WhereLtIf(conditional bool, columnName any, args any) *TableSet[Table]

WhereLtIf 当conditional==true时,使用小于条件

func (*TableSet[Table]) WhereLte added in v0.12.0

func (receiver *TableSet[Table]) WhereLte(columnName any, args any) *TableSet[Table]

func (*TableSet[Table]) WhereLteIf added in v0.12.0

func (receiver *TableSet[Table]) WhereLteIf(conditional bool, columnName any, args any) *TableSet[Table]

WhereLteIf 当conditional==true时,使用小于等于条件

type TracePlugin added in v0.9.0

type TracePlugin struct {
	// contains filtered or unexported fields
}

func (*TracePlugin) Initialize added in v0.9.0

func (op *TracePlugin) Initialize(db *gorm.DB) (err error)

func (*TracePlugin) Name added in v0.9.0

func (op *TracePlugin) Name() string

Directories

Path Synopsis
driver
clickhouse Module
postgres Module
sqlite Module
sqlserver Module

Jump to

Keyboard shortcuts

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