正在显示
5 个修改的文件
包含
121 行增加
和
0 行删除
pkg/application/table/command/row_delete.go
0 → 100644
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | + | ||
9 | + "github.com/beego/beego/v2/core/validation" | ||
10 | +) | ||
11 | + | ||
12 | +type RowsDeleteCommand struct { | ||
13 | + // 表Id | ||
14 | + TableId int `cname:"表Id" json:"tableId" valid:"Required"` | ||
15 | + Where domain.Where `json:"where"` | ||
16 | +} | ||
17 | + | ||
18 | +func (cmd *RowsDeleteCommand) Valid(validation *validation.Validation) { | ||
19 | +} | ||
20 | + | ||
21 | +func (cmd *RowsDeleteCommand) ValidateCommand() error { | ||
22 | + valid := validation.Validation{} | ||
23 | + b, err := valid.Valid(cmd) | ||
24 | + if err != nil { | ||
25 | + return err | ||
26 | + } | ||
27 | + if !b { | ||
28 | + elem := reflect.TypeOf(cmd).Elem() | ||
29 | + for _, validErr := range valid.Errors { | ||
30 | + field, isExist := elem.FieldByName(validErr.Field) | ||
31 | + if isExist { | ||
32 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
33 | + } else { | ||
34 | + return fmt.Errorf(validErr.Message) | ||
35 | + } | ||
36 | + } | ||
37 | + } | ||
38 | + return nil | ||
39 | +} |
@@ -97,6 +97,42 @@ func (tableService *TableService) RowEditV2(ctx *domain.Context, cmd *command.Ro | @@ -97,6 +97,42 @@ func (tableService *TableService) RowEditV2(ctx *domain.Context, cmd *command.Ro | ||
97 | return struct{}{}, nil | 97 | return struct{}{}, nil |
98 | } | 98 | } |
99 | 99 | ||
100 | +func (tableService *TableService) RowsDelete(ctx *domain.Context, cmd *command.RowsDeleteCommand) (interface{}, error) { | ||
101 | + if err := cmd.ValidateCommand(); err != nil { | ||
102 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
103 | + } | ||
104 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
105 | + if err != nil { | ||
106 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
107 | + } | ||
108 | + //if err := transactionContext.StartTransaction(); err != nil { | ||
109 | + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
110 | + //} | ||
111 | + //defer func() { | ||
112 | + // transactionContext.RollbackTransaction() | ||
113 | + //}() | ||
114 | + | ||
115 | + var table *domain.Table | ||
116 | + _, table, err = factory.FastPgTable(transactionContext, cmd.TableId) | ||
117 | + if err != nil { | ||
118 | + return nil, factory.FastError(err) | ||
119 | + } | ||
120 | + | ||
121 | + var options = starrocks.QueryOptions{ | ||
122 | + TableName: table.SQLName, | ||
123 | + Select: []*domain.Field{domain.PK()}, //table.Fields(true), | ||
124 | + Where: []starrocks.Condition{}, | ||
125 | + } | ||
126 | + options.SetCondition(cmd.Where.Conditions) | ||
127 | + total, err := starrocks.WrapDeleteFuncWithDB(starrocks.DB)(options) | ||
128 | + //if err := transactionContext.CommitTransaction(); err != nil { | ||
129 | + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
130 | + //} | ||
131 | + return map[string]interface{}{ | ||
132 | + "rowsAffected": total, | ||
133 | + }, nil | ||
134 | +} | ||
135 | + | ||
100 | func MapArrayToFieldValues(list []map[string]string, table *domain.Table, dataTable *domain.DataTable, mustMatch bool) []*domain.FieldValues { | 136 | func MapArrayToFieldValues(list []map[string]string, table *domain.Table, dataTable *domain.DataTable, mustMatch bool) []*domain.FieldValues { |
101 | var result = make([]*domain.FieldValues, 0) | 137 | var result = make([]*domain.FieldValues, 0) |
102 | history := dto.ToFieldDataByPK(table, dataTable) | 138 | history := dto.ToFieldDataByPK(table, dataTable) |
@@ -342,6 +342,43 @@ func WrapQueryFuncWithDB(db *gorm.DB) func(QueryOptions) (*sql.Rows, error) { | @@ -342,6 +342,43 @@ func WrapQueryFuncWithDB(db *gorm.DB) func(QueryOptions) (*sql.Rows, error) { | ||
342 | } | 342 | } |
343 | } | 343 | } |
344 | 344 | ||
345 | +func WrapDeleteFuncWithDB(db *gorm.DB) func(QueryOptions) (int64, error) { | ||
346 | + return func(params QueryOptions) (int64, error) { | ||
347 | + query := db.Table(params.TableName) | ||
348 | + queryWithoutLimitOffset(query, params) | ||
349 | + //if params.Offset > 0 { | ||
350 | + // query.Offset(params.Offset) | ||
351 | + //} | ||
352 | + //if params.Limit > 0 { | ||
353 | + // query.Limit(params.Limit) | ||
354 | + //} | ||
355 | + //if params.Context != nil { | ||
356 | + // query.Where(fmt.Sprintf("context->>'companyId'='%v'", params.Context.CompanyId)) | ||
357 | + //} | ||
358 | + rows, err := query.Rows() | ||
359 | + defer rows.Close() | ||
360 | + if err != nil { | ||
361 | + return 0, err | ||
362 | + } | ||
363 | + dataTable := &domain.DataTable{} | ||
364 | + dataTable.Data, err = ScanRows(rows) | ||
365 | + idList := make([]string, 0) | ||
366 | + for _, row := range dataTable.Data { | ||
367 | + if len(row) == 0 { | ||
368 | + continue | ||
369 | + } | ||
370 | + idList = append(idList, row[0]) | ||
371 | + } | ||
372 | + if len(idList) == 0 { | ||
373 | + return 0, nil | ||
374 | + } | ||
375 | + c := Condition{} | ||
376 | + sql := fmt.Sprintf("delete from %v where id in %v", params.TableName, c.InArgs(idList)) | ||
377 | + query = db.Exec(sql) | ||
378 | + return int64(len(idList)), query.Error | ||
379 | + } | ||
380 | +} | ||
381 | + | ||
345 | func SetTable(query *gorm.DB, tableName string) { | 382 | func SetTable(query *gorm.DB, tableName string) { |
346 | query.Statement.Table = tableName | 383 | query.Statement.Table = tableName |
347 | } | 384 | } |
@@ -279,6 +279,14 @@ func (controller *TableController) RowEdit() { | @@ -279,6 +279,14 @@ func (controller *TableController) RowEdit() { | ||
279 | controller.Response(data, err) | 279 | controller.Response(data, err) |
280 | } | 280 | } |
281 | 281 | ||
282 | +func (controller *TableController) RowsDelete() { | ||
283 | + tableService := service.NewTableService(nil) | ||
284 | + cmd := &command.RowsDeleteCommand{} | ||
285 | + Must(controller.Unmarshal(cmd)) | ||
286 | + data, err := tableService.RowsDelete(ParseContext(controller.BaseController), cmd) | ||
287 | + controller.Response(data, err) | ||
288 | +} | ||
289 | + | ||
282 | func (controller *TableController) DependencyGraph() { | 290 | func (controller *TableController) DependencyGraph() { |
283 | tableService := service.NewTableService(nil) | 291 | tableService := service.NewTableService(nil) |
284 | updateTableCommand := &query.GetTableQuery{} | 292 | updateTableCommand := &query.GetTableQuery{} |
@@ -34,6 +34,7 @@ func init() { | @@ -34,6 +34,7 @@ func init() { | ||
34 | 34 | ||
35 | web.Router("/data/tables/table-preview", tableController, "Post:TablePreview") | 35 | web.Router("/data/tables/table-preview", tableController, "Post:TablePreview") |
36 | web.Router("/data/tables/row-edit", tableController, "Post:RowEdit") | 36 | web.Router("/data/tables/row-edit", tableController, "Post:RowEdit") |
37 | + web.Router("/data/tables/row-delete", tableController, "Post:RowsDelete") | ||
37 | 38 | ||
38 | web.Router("/data/field-optional-values", tableController, "Post:FieldOptionalValues") | 39 | web.Router("/data/field-optional-values", tableController, "Post:FieldOptionalValues") |
39 | web.Router("/data/table-object-search", tableController, "Post:TableObjectSearch") | 40 | web.Router("/data/table-object-search", tableController, "Post:TableObjectSearch") |
-
请 注册 或 登录 后发表评论