|
|
@@ -130,7 +130,7 @@ func Update(fromTableName string, fromRelationFieldName string, fromRelationColu
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func Query[TI any](fromTableName string, toTableName string, toRelationColumnName string) binding.ServiceFunc[TI] {
|
|
|
+func Query[TI any](fromTableName string, fromRelationFieldName string, toTableName string, toRelationColumnName string) binding.ServiceFunc[TI] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (TI, error) {
|
|
|
outputZero := reflectutils.Zero[TI]()
|
|
|
|
|
|
@@ -147,21 +147,36 @@ func Query[TI any](fromTableName string, toTableName string, toRelationColumnNam
|
|
|
}
|
|
|
|
|
|
// from存在性校验
|
|
|
- fromExist, err := database.CheckExist(dbExecutor, &sql.CheckExistExecuteParams{
|
|
|
+ existFromResult, err := database.QueryOne(dbExecutor, &sql.QueryOneExecuteParams{
|
|
|
TableName: fromTableName,
|
|
|
Conditions: sql.NewConditions().Equal(entity.ColumnID, fromEntity.GetID()),
|
|
|
})
|
|
|
if err != nil {
|
|
|
+ if database.IsErrorDBRecordNotExist(err) {
|
|
|
+ return outputZero, fserr.New(fromEntity.DomainCNName() + "不存在")
|
|
|
+ }
|
|
|
+
|
|
|
return outputZero, err
|
|
|
}
|
|
|
|
|
|
- if !fromExist {
|
|
|
- return outputZero, fserr.New(fromEntity.DomainCNName() + "不存在")
|
|
|
+ existFromEntity := reflect.New(reflect.TypeOf(object).Elem()).Interface()
|
|
|
+ err = sql.ParseSqlResult(existFromResult, existFromEntity)
|
|
|
+ if err != nil {
|
|
|
+ return outputZero, err
|
|
|
+ }
|
|
|
+
|
|
|
+ if !domain.HasField(existFromEntity, fromRelationFieldName) {
|
|
|
+ return outputZero, fserr.New("关联字段" + fromRelationFieldName + "不存在")
|
|
|
+ }
|
|
|
+
|
|
|
+ toID, err := domain.Field[string](existFromEntity, fromRelationFieldName)
|
|
|
+ if err != nil {
|
|
|
+ return outputZero, err
|
|
|
}
|
|
|
|
|
|
toResult, err := database.QueryOne(dbExecutor, &sql.QueryOneExecuteParams{
|
|
|
TableName: toTableName,
|
|
|
- Conditions: sql.NewConditions().Equal(toRelationColumnName, fromEntity.GetID()),
|
|
|
+ Conditions: sql.NewConditions().Equal(entity.ColumnID, toID),
|
|
|
})
|
|
|
if err != nil && !database.IsErrorDBRecordNotExist(err) {
|
|
|
return outputZero, err
|