|
|
@@ -14,8 +14,10 @@ import (
|
|
|
"reflect"
|
|
|
)
|
|
|
|
|
|
-func Create(tableName string, dbExecutor database.Executor, callbacks *Callbacks[string]) binding.ServiceFunc[string] {
|
|
|
+func Create(tableName string, callbacks *Callbacks[string]) binding.ServiceFunc[string] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (string, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
e, ok := objects[0].(domain.Entity)
|
|
|
if !ok {
|
|
|
return "", fserr.New("需要传递领域对象应该为实体")
|
|
|
@@ -23,17 +25,17 @@ func Create(tableName string, dbExecutor database.Executor, callbacks *Callbacks
|
|
|
|
|
|
err := e.GenerateID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
err = e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
err = database.InsertEntity(dbExecutor, tableName, e)
|
|
|
@@ -42,20 +44,22 @@ func Create(tableName string, dbExecutor database.Executor, callbacks *Callbacks
|
|
|
err = fserr.New(e.DomainCNName() + "已存在")
|
|
|
}
|
|
|
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, e.GetID())
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, e.GetID())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func Delete(tableName string, dbExecutor database.Executor, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func Delete(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
e, ok := objects[0].(domain.Entity)
|
|
|
if !ok {
|
|
|
return nil, fserr.New("需要传递领域对象应该为实体")
|
|
|
@@ -63,30 +67,32 @@ func Delete(tableName string, dbExecutor database.Executor, callbacks *Callbacks
|
|
|
|
|
|
err := e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
err = database.DeleteEntity(dbExecutor, tableName, e)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, nil)
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, nil)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func Update(tableName string, dbExecutor database.Executor, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func Update(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
e, ok := objects[0].(domain.Entity)
|
|
|
if !ok {
|
|
|
return nil, fserr.New("需要传递领域对象应该为实体")
|
|
|
@@ -94,7 +100,7 @@ func Update(tableName string, dbExecutor database.Executor, callbacks *Callbacks
|
|
|
|
|
|
err := e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
exist, err := database.CheckExist(dbExecutor, &sql.CheckExistExecuteParams{
|
|
|
@@ -102,37 +108,39 @@ func Update(tableName string, dbExecutor database.Executor, callbacks *Callbacks
|
|
|
Conditions: sql.NewConditions().Equal(e.IDColumnName(), e.GetID()),
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
if !exist {
|
|
|
err := fserr.New(e.DomainCNName() + "不存在")
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
err = database.UpdateEntity(dbExecutor, tableName, e)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, nil)
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, nil)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
type ConditionFieldCallback func(conditions *sql.Conditions, fieldName string, columnName string, value any) (hasDeal bool)
|
|
|
|
|
|
-func Query[O any](tableName string, dbExecutor database.Executor, callbacks *Callbacks[response.InfosData[O]], conditionFieldCallback ConditionFieldCallback) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
+func Query[O any](tableName string, callbacks *Callbacks[response.InfosData[O]], conditionFieldCallback ConditionFieldCallback) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (response.InfosData[O], error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
queryParams, ok := params.(request.Query)
|
|
|
if !ok {
|
|
|
return response.InfosData[O]{}, fserr.New("请求参数不是Query接口")
|
|
|
@@ -164,9 +172,9 @@ func Query[O any](tableName string, dbExecutor database.Executor, callbacks *Cal
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, response.InfosData[O]{})
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, response.InfosData[O]{})
|
|
|
}
|
|
|
|
|
|
results, totalCount, err := database.Query(dbExecutor, &sql.QueryExecuteParams{
|
|
|
@@ -176,18 +184,18 @@ func Query[O any](tableName string, dbExecutor database.Executor, callbacks *Cal
|
|
|
PageSize: queryParams.GetPageSize(),
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, response.InfosData[O]{})
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, response.InfosData[O]{})
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, response.InfosData[O]{})
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, response.InfosData[O]{})
|
|
|
}
|
|
|
|
|
|
infos := make([]O, 0)
|
|
|
err = sql.ParseSqlResult(results, &infos)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, response.InfosData[O]{})
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, response.InfosData[O]{})
|
|
|
}
|
|
|
|
|
|
output := response.InfosData[O]{
|
|
|
@@ -196,12 +204,14 @@ func Query[O any](tableName string, dbExecutor database.Executor, callbacks *Cal
|
|
|
PageNo: queryParams.GetPageNo(),
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, output)
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, output)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func GetByID[O any](tableName string, dbExecutor database.Executor, callbacks *Callbacks[O]) binding.ServiceFunc[O] {
|
|
|
+func GetByID[O any](tableName string, callbacks *Callbacks[O]) binding.ServiceFunc[O] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (O, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
var outputZero O
|
|
|
outputZeroValue := reflect.Zero(reflect.TypeOf(outputZero))
|
|
|
if outputZeroValue.Kind() == reflect.Pointer {
|
|
|
@@ -215,12 +225,12 @@ func GetByID[O any](tableName string, dbExecutor database.Executor, callbacks *C
|
|
|
|
|
|
err := e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, outputZero)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, outputZero)
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, outputZero)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, outputZero)
|
|
|
}
|
|
|
|
|
|
result, err := database.QueryOne(dbExecutor, &sql.QueryOneExecuteParams{
|
|
|
@@ -228,12 +238,12 @@ func GetByID[O any](tableName string, dbExecutor database.Executor, callbacks *C
|
|
|
Conditions: sql.NewConditions().Equal(e.IDColumnName(), e.GetID()),
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, outputZero)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, outputZero)
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, dbExecutor)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, dbExecutor)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, outputZero)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, outputZero)
|
|
|
}
|
|
|
|
|
|
var info O
|
|
|
@@ -246,15 +256,17 @@ func GetByID[O any](tableName string, dbExecutor database.Executor, callbacks *C
|
|
|
|
|
|
err = sql.ParseSqlResult(result, infoPointer)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, outputZero)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, outputZero)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, info)
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, info)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func CreateTx(tableName string, dbExecutor database.Executor, callbacks *Callbacks[string]) binding.ServiceFunc[string] {
|
|
|
+func CreateTx(tableName string, callbacks *Callbacks[string]) binding.ServiceFunc[string] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (string, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
e, ok := objects[0].(domain.Entity)
|
|
|
if !ok {
|
|
|
return "", fserr.New("需要传递领域对象应该为实体")
|
|
|
@@ -262,16 +274,16 @@ func CreateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
|
|
|
err := e.GenerateID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
err = e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
err = database.Transaction(dbExecutor, func(tx database.Executor) error {
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, tx)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -285,7 +297,7 @@ func CreateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, tx)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -293,15 +305,17 @@ func CreateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
return nil
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, "")
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, "")
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, e.GetID())
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, e.GetID())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func DeleteTx(tableName string, dbExecutor database.Executor, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func DeleteTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
e, ok := objects[0].(domain.Entity)
|
|
|
if !ok {
|
|
|
return nil, fserr.New("需要传递领域对象应该为实体")
|
|
|
@@ -309,11 +323,11 @@ func DeleteTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
|
|
|
err := e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
err = database.Transaction(dbExecutor, func(tx database.Executor) error {
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, tx)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -323,7 +337,7 @@ func DeleteTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, tx)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -331,15 +345,17 @@ func DeleteTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
return nil
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, nil)
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, nil)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func UpdateTx(tableName string, dbExecutor database.Executor, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func UpdateTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
+ dbExecutor := i.DBExecutor()
|
|
|
+
|
|
|
e, ok := objects[0].(domain.Entity)
|
|
|
if !ok {
|
|
|
return nil, fserr.New("需要传递领域对象应该为实体")
|
|
|
@@ -347,7 +363,7 @@ func UpdateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
|
|
|
err := e.CheckID()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
exist, err := database.CheckExist(dbExecutor, &sql.CheckExistExecuteParams{
|
|
|
@@ -355,16 +371,16 @@ func UpdateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
Conditions: sql.NewConditions().Equal(e.IDColumnName(), e.GetID()),
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
if !exist {
|
|
|
err := fserr.New(e.DomainCNName() + "不存在")
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
err = database.Transaction(dbExecutor, func(tx database.Executor) error {
|
|
|
- err = callbackBeforeDBOperate(callbacks, e, tx)
|
|
|
+ err = callbackBeforeDBOperate(callbacks, e, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -374,7 +390,7 @@ func UpdateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, e, tx)
|
|
|
+ err = callbackAfterDBOperate(callbacks, e, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -382,9 +398,9 @@ func UpdateTx(tableName string, dbExecutor database.Executor, callbacks *Callbac
|
|
|
return nil
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, e, err, dbExecutor, nil)
|
|
|
+ return callbackOnErrorReturn(callbacks, e, err, i, nil)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, e, dbExecutor, nil)
|
|
|
+ return callbackOnSuccessReturn(callbacks, e, i, nil)
|
|
|
}
|
|
|
}
|