data

package
v0.0.29-beta.3 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IData

type IData interface {
	Object(objectAPIName string) IObject
	NewTransaction() ITransaction
	Oql(oql string, args ...interface{}) IOql
}

type IDataV2

type IDataV2 interface {
	Object(objectAPIName string) IObjectV2
}

type IObject

type IObject interface {
	Create(ctx context.Context, record interface{}) (id *structs.RecordID, err error)
	BatchCreate(ctx context.Context, records interface{}) (ids []int64, err error)
	BatchCreateAsync(ctx context.Context, records interface{}) (taskID int64, err error)

	Update(ctx context.Context, recordID int64, record interface{}) (err error)
	BatchUpdate(ctx context.Context, records map[int64]interface{}, result ...interface{}) (err error)
	BatchUpdateAsync(ctx context.Context, records map[int64]interface{}) (taskID int64, err error)

	Delete(ctx context.Context, recordID int64) (err error)
	BatchDelete(ctx context.Context, recordIDs []int64, result ...interface{}) (err error)
	BatchDeleteAsync(ctx context.Context, recordIDs []int64) (taskID int64, err error)

	Count(ctx context.Context) (count int64, err error)
	Find(ctx context.Context, records interface{}, unauthFields ...interface{}) (err error)
	FindOne(ctx context.Context, record interface{}, unauthFields ...interface{}) (err error)
	// Deprecated: Use FindStream instead.
	FindAll(ctx context.Context, records interface{}) (err error)
	// FindStream 流式查询
	// @param ctx 上下文
	// @param recordType 记录数据的类型
	// @param handler 处理函数,已废弃,使用 params.Handler 参数代替
	// @param params 参数,包括 IDGetter 和 Handler 处理函数
	// @example:
	// err := app.Data.Object("testObject").Select("testText", "testNumber").FindStream(ctx, reflect.TypeOf(&TestObject{}), nil,
	//		structs.FindStreamParam{
	//			IDGetter: func(record interface{}) (id int64, err error) {
	//				t, ok := record.(TestObject)
	//				if !ok {
	//					return 0, fmt.Errorf(fmt.Sprintf("should be TestObject, but %T", record))
	//				}
	//				return t.ID, nil
	//			},
	//			Handler: func(ctx context.Context, data *structs.FindStreamData) error {
	//				var rs []*TestObject
	//				for i := 0; i < reflect.ValueOf(data.Records).Elem().Len(); i++ {
	//					o, ok := reflect.ValueOf(data.Records).Elem().Index(i).Interface().(TestObject)
	//					if !ok {
	//						panic(fmt.Sprintf("should be TestObject, but %T", reflect.ValueOf(data.Records).Elem().Index(i).Interface()))
	//					}
	//					rs = append(rs, &o)
	//				}
	//
	//              // doSomething
	//				return nil
	//			},
	//		})
	//	if err != nil {
	//		panic(err)
	//	}
	FindStream(ctx context.Context, recordType reflect.Type, handler func(ctx context.Context, records interface{}) error, param ...structs.FindStreamParam) (err error)

	// Where 配置过滤条件
	// @param condition:过滤条件,其类型为逻辑表达式 *cond.LogicalExpression 或算术表达式 *cond.ArithmeticExpression,不合法的类型会报错
	// @example condition:
	//     cond.And(...)
	//     cond.Or(...)
	//     cond.Eq(...)
	//     cond.Gt(...)
	// @return 返回查询对象
	Where(condition interface{}) IQuery
	// FuzzySearch 模糊查询:与 where 之间是与关系
	// @param keyword 模糊查询的关键字,必填且不可以为空串
	// @param fieldAPINames 『可搜索字段』的字段列表,不可为空
	// @example: FuzzySearch("张三", []string{"_name"})
	FuzzySearch(keyword string, fieldAPINames []string) IQuery
	Offset(offset int64) IQuery
	Limit(limit int64) IQuery
	OrderBy(fieldAPINames ...string) IQuery
	OrderByDesc(fieldAPINames ...string) IQuery
	Select(fieldAPINames ...string) IQuery

	UseUserAuth() IObject
	UseSystemAuth() IObject
}

type IObjectV2

type IObjectV2 interface {
	Create(ctx context.Context, record interface{}) (*structs.RecordID, error)
	BatchCreate(ctx context.Context, records interface{}) ([]int64, error)

	Update(ctx context.Context, recordID int64, record interface{}) error
	BatchUpdate(ctx context.Context, records map[int64]interface{}, result ...interface{}) error

	Delete(ctx context.Context, recordID int64) error
	BatchDelete(ctx context.Context, recordIDs []int64, result ...interface{}) error

	Count(ctx context.Context) (int64, error)
	// Find 查询记录,最多 200条
	// @param records 返回的记录
	// @param unauthFields 返回的无权限字段,类型为 [][]string,第一维对应 records 中的第 x 个记录,第二维表示无权限字段的列表
	Find(ctx context.Context, records interface{}, unauthFields ...interface{}) error
	// FindOne 查询1条记录
	// @param record 返回的记录
	// @param unauthFields 返回的无权限字段,类型为 []string,表示无权限字段的列表
	FindOne(ctx context.Context, record interface{}, unauthFields ...interface{}) error
	// Deprecated: Use FindStream instead.
	FindAll(ctx context.Context, records interface{}) error
	// FindStream 流式查询
	// @param ctx 上下文
	// @param recordType 记录数据的类型
	// @param handler 处理函数,已废弃,使用 params.Handler 参数代替
	// @param params 参数,包括 IDGetter 和 Handler 处理函数
	// @example:
	// err := app.Data.Object("testObject").Select("testText", "testNumber").FindStream(ctx, reflect.TypeOf(&TestObject{}), nil,
	//		structs.FindStreamParam{
	//			IDGetter: func(record interface{}) (id int64, err error) {
	//				t, ok := record.(TestObject)
	//				if !ok {
	//					return 0, fmt.Errorf(fmt.Sprintf("should be TestObject, but %T", record))
	//				}
	//				return t.ID, nil
	//			},
	//			Handler: func(ctx context.Context, data *structs.FindStreamData) error {
	//				var rs []*TestObject
	//				for i := 0; i < reflect.ValueOf(data.Records).Elem().Len(); i++ {
	//					o, ok := reflect.ValueOf(data.Records).Elem().Index(i).Interface().(TestObject)
	//					if !ok {
	//						panic(fmt.Sprintf("should be TestObject, but %T", reflect.ValueOf(data.Records).Elem().Index(i).Interface()))
	//					}
	//					rs = append(rs, &o)
	//				}
	//
	//              // doSomething
	//				return nil
	//			},
	//		})
	//	if err != nil {
	//		panic(err)
	//	}
	FindStream(ctx context.Context, recordType reflect.Type, handler func(ctx context.Context, records interface{}) error, param ...structs.FindStreamParam) error

	// Where 配置过滤条件
	// @param condition:过滤条件,其类型为逻辑表达式 *cond.LogicalExpression 或算术表达式 *cond.ArithmeticExpression,不合法的类型会报错
	// @example condition:
	//     cond.And(...)
	//     cond.Or(...)
	//     cond.Eq(...)
	//     cond.Gt(...)
	// @return 返回查询对象
	Where(condition interface{}) IQuery
	Offset(offset int64) IQuery
	Limit(limit int64) IQuery
	OrderBy(fieldAPINames ...string) IQuery
	OrderByDesc(fieldAPINames ...string) IQuery
	Select(fieldAPINames ...string) IQuery
}

type IOql

type IOql interface {
	UseUserAuth() IOql
	UseSystemAuth() IOql
	Execute(ctx context.Context, resultSet interface{}, unauthFields ...interface{}) (err error)
}

type IQuery

type IQuery interface {
	Count(ctx context.Context) (int64, error)
	// Find 查询记录,最多 200条
	// @param records 返回的记录
	// @param unauthFields 返回的无权限字段,类型为 [][]string,第一维对应 records 中的第 x 个记录,第二维表示无权限字段的列表
	Find(ctx context.Context, records interface{}, unauthFields ...interface{}) error
	// FindOne 查询1条记录
	// @param record 返回的记录
	// @param unauthFields 返回的无权限字段,类型为 []string,表示无权限字段的列表
	FindOne(ctx context.Context, record interface{}, unauthFields ...interface{}) error
	// Deprecated: Use FindStream instead.
	FindAll(ctx context.Context, records interface{}) error
	// FindStream 流式查询
	// @param ctx 上下文
	// @param recordType 记录数据的类型
	// @param handler 处理函数,已废弃,使用 params.Handler 参数代替
	// @param params 参数,包括 IDGetter 和 Handler 处理函数
	// @example:
	// err := app.Data.Object("testObject").Select("testText", "testNumber").FindStream(ctx, reflect.TypeOf(&TestObject{}), nil,
	//		structs.FindStreamParam{
	//			IDGetter: func(record interface{}) (id int64, err error) {
	//				t, ok := record.(TestObject)
	//				if !ok {
	//					return 0, fmt.Errorf(fmt.Sprintf("should be TestObject, but %T", record))
	//				}
	//				return t.ID, nil
	//			},
	//			Handler: func(ctx context.Context, data *structs.FindStreamData) error {
	//				var rs []*TestObject
	//				for i := 0; i < reflect.ValueOf(data.Records).Elem().Len(); i++ {
	//					o, ok := reflect.ValueOf(data.Records).Elem().Index(i).Interface().(TestObject)
	//					if !ok {
	//						panic(fmt.Sprintf("should be TestObject, but %T", reflect.ValueOf(data.Records).Elem().Index(i).Interface()))
	//					}
	//					rs = append(rs, &o)
	//				}
	//
	//              // doSomething
	//				return nil
	//			},
	//		})
	//	if err != nil {
	//		panic(err)
	//	}
	FindStream(ctx context.Context, recordType reflect.Type, handler func(ctx context.Context, records interface{}) error, params ...structs.FindStreamParam) error

	// Where 配置过滤条件
	// @param condition:过滤条件,其类型为 *cond.LogicalExpression 或 *cond.ArithmeticExpression,不合法的类型会报错
	// @example condition:
	//     cond.And(...)
	//     cond.Or(...)
	//     cond.Eq(...)
	//     cond.Gt(...)
	// @return 返回查询对象
	Where(condition interface{}) IQuery
	// FuzzySearch 模糊查询:与 where 之间是与关系
	// @param keyword 模糊查询的关键字,必填且不可以为空串
	// @param fieldAPINames 『可搜索字段』的字段列表,不可为空
	// @example: FuzzySearch("张三", []string{"_name"})
	FuzzySearch(keyword string, fieldAPINames []string) IQuery
	Offset(offset int64) IQuery
	Limit(limit int64) IQuery
	OrderBy(fieldAPINames ...string) IQuery
	OrderByDesc(fieldAPINames ...string) IQuery
	Select(fieldAPINames ...string) IQuery
	UseUserAuth() IQuery
	UseSystemAuth() IQuery
}

type ITransaction

type ITransaction interface {
	Object(objectAPIName string) ITransactionObject
	Commit(ctx context.Context) (err error)

	UseUserAuth() ITransaction
	UseSystemAuth() ITransaction
}

type ITransactionObject

type ITransactionObject interface {
	RegisterCreate(record interface{}) (id *structs.TransactionRecordID, err error)
	RegisterUpdate(recordID interface{}, record interface{})
	RegisterDelete(recordID interface{})
	RegisterBatchCreate(records interface{}) (ids []interface{}, err error)
	RegisterBatchUpdate(records interface{})
	RegisterBatchDelete(recordIDs interface{})
}

Directories

Path Synopsis
field_type

Jump to

Keyboard shortcuts

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