|
|
@@ -15,7 +15,7 @@ import (
|
|
|
"reflect"
|
|
|
)
|
|
|
|
|
|
-func Create(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func Create(tableName string, callbacks *CreateCallbacks) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
object := objects[0]
|
|
|
if object == nil {
|
|
|
@@ -31,12 +31,17 @@ func Create(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any
|
|
|
|
|
|
err := valueObject.ForCreate()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, valueObject, i, dbExecutor)
|
|
|
+ prepared, err := callbackPrepareCreate(callbacks, valueObject, i)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = callbackBeforeCreate(callbacks, valueObject, prepared, i, nil)
|
|
|
+ if err != nil {
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, prepared, err, i)
|
|
|
}
|
|
|
|
|
|
err = database.InsertEntity(dbExecutor, tableName, valueObject)
|
|
|
@@ -45,19 +50,19 @@ func Create(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any
|
|
|
err = fserr.New(valueObject.DomainCNName() + "已存在")
|
|
|
}
|
|
|
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, prepared, err, i)
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, valueObject, i, dbExecutor)
|
|
|
+ err = callbackAfterCreate(callbacks, valueObject, prepared, i, nil)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, prepared, err, i)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, valueObject, i, nil)
|
|
|
+ return nil, callbackOnCreateSuccessReturn(callbacks, valueObject, prepared, i)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func Delete(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func Delete(tableName string, callbacks *DeleteCallbacks) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
object := objects[0]
|
|
|
if object == nil {
|
|
|
@@ -73,31 +78,36 @@ func Delete(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any
|
|
|
|
|
|
err := valueObject.CheckKeyFields()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, valueObject, i, dbExecutor)
|
|
|
+ prepared, err := callbackPrepareDelete(callbacks, valueObject, i)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = callbackBeforeDelete(callbacks, valueObject, prepared, i, nil)
|
|
|
+ if err != nil {
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
}
|
|
|
|
|
|
err = database.DeleteEntity(dbExecutor, tableName, valueObject)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, valueObject, i, dbExecutor)
|
|
|
+ err = callbackAfterDelete(callbacks, valueObject, prepared, i, nil)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, valueObject, i, nil)
|
|
|
+ return nil, callbackOnDeleteSuccessReturn(callbacks, valueObject, prepared, i)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
type ConditionFieldCallback func(conditions *sql.Conditions, fieldName string, columnName string, value any) (hasDeal bool)
|
|
|
|
|
|
-func Query[O any](tableName string, callbacks *Callbacks[response.InfosData[O]], conditionFieldCallback ConditionFieldCallback) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
+func Query[O any](tableName string, callbacks *QueryCallbacks[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) {
|
|
|
errResponse := response.InfosData[O]{
|
|
|
Infos: make([]O, 0),
|
|
|
@@ -145,9 +155,9 @@ func Query[O any](tableName string, callbacks *Callbacks[response.InfosData[O]],
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- err = callbackBeforeDBOperate(callbacks, valueObject, i, dbExecutor)
|
|
|
+ err = callbackBeforeQuery(callbacks, valueObject, i)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, errResponse)
|
|
|
+ return callbackOnQueryErrorReturn(callbacks, valueObject, err, i)
|
|
|
}
|
|
|
|
|
|
results, totalCount, err := database.Query(dbExecutor, &sql.QueryExecuteParams{
|
|
|
@@ -157,18 +167,18 @@ func Query[O any](tableName string, callbacks *Callbacks[response.InfosData[O]],
|
|
|
PageSize: queryParams.GetPageSize(),
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, errResponse)
|
|
|
+ return callbackOnQueryErrorReturn(callbacks, valueObject, err, i)
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, valueObject, i, dbExecutor)
|
|
|
+ err = callbackAfterQuery(callbacks, valueObject, i)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, errResponse)
|
|
|
+ return callbackOnQueryErrorReturn(callbacks, valueObject, err, i)
|
|
|
}
|
|
|
|
|
|
infos := make([]O, 0)
|
|
|
err = sql.ParseSqlResult(results, &infos)
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, errResponse)
|
|
|
+ return callbackOnQueryErrorReturn(callbacks, valueObject, err, i)
|
|
|
}
|
|
|
|
|
|
output := response.InfosData[O]{
|
|
|
@@ -177,11 +187,11 @@ func Query[O any](tableName string, callbacks *Callbacks[response.InfosData[O]],
|
|
|
PageNo: queryParams.GetPageNo(),
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, valueObject, i, output)
|
|
|
+ return callbackOnQuerySuccessReturn(callbacks, valueObject, i, output)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func CreateTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func CreateTx(tableName string, callbacks *CreateCallbacks) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
object := objects[0]
|
|
|
if object == nil {
|
|
|
@@ -195,8 +205,13 @@ func CreateTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[a
|
|
|
return nil, fserr.New("需要传递领域对象应该为值对象")
|
|
|
}
|
|
|
|
|
|
- err := database.Transaction(dbExecutor, func(tx database.Executor) error {
|
|
|
- err := callbackBeforeDBOperate(callbacks, valueObject, i, tx)
|
|
|
+ prepared, err := callbackPrepareCreate(callbacks, valueObject, i)
|
|
|
+ if err != nil {
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = database.Transaction(dbExecutor, func(tx database.Executor) error {
|
|
|
+ err := callbackBeforeCreate(callbacks, valueObject, prepared, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -210,7 +225,7 @@ func CreateTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[a
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, valueObject, i, tx)
|
|
|
+ err = callbackAfterCreate(callbacks, valueObject, prepared, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -218,14 +233,14 @@ func CreateTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[a
|
|
|
return nil
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnCreateErrorReturn(callbacks, valueObject, prepared, err, i)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, valueObject, i, nil)
|
|
|
+ return nil, callbackOnCreateSuccessReturn(callbacks, valueObject, prepared, i)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func DeleteTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[any] {
|
|
|
+func DeleteTx(tableName string, callbacks *DeleteCallbacks) binding.ServiceFunc[any] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (any, error) {
|
|
|
object := objects[0]
|
|
|
if object == nil {
|
|
|
@@ -241,11 +256,16 @@ func DeleteTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[a
|
|
|
|
|
|
err := valueObject.CheckKeyFields()
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
+ }
|
|
|
+
|
|
|
+ prepared, err := callbackPrepareDelete(callbacks, valueObject, i)
|
|
|
+ if err != nil {
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, make(map[string]any), err, i)
|
|
|
}
|
|
|
|
|
|
err = database.Transaction(dbExecutor, func(tx database.Executor) error {
|
|
|
- err = callbackBeforeDBOperate(callbacks, valueObject, i, tx)
|
|
|
+ err = callbackBeforeDelete(callbacks, valueObject, prepared, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -255,7 +275,7 @@ func DeleteTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[a
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- err = callbackAfterDBOperate(callbacks, valueObject, i, tx)
|
|
|
+ err = callbackAfterDelete(callbacks, valueObject, prepared, i, tx)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -263,9 +283,9 @@ func DeleteTx(tableName string, callbacks *Callbacks[any]) binding.ServiceFunc[a
|
|
|
return nil
|
|
|
})
|
|
|
if err != nil {
|
|
|
- return callbackOnErrorReturn(callbacks, valueObject, err, i, nil)
|
|
|
+ return nil, callbackOnDeleteErrorReturn(callbacks, valueObject, prepared, err, i)
|
|
|
}
|
|
|
|
|
|
- return callbackOnSuccessReturn(callbacks, valueObject, i, nil)
|
|
|
+ return nil, callbackOnDeleteSuccessReturn(callbacks, valueObject, prepared, i)
|
|
|
}
|
|
|
}
|