作者 yangfu

先应用于的排前面

@@ -2,4 +2,8 @@ ALTER TABLE files ADD file_from TEXT; @@ -2,4 +2,8 @@ ALTER TABLE files ADD file_from TEXT;
2 ALTER TABLE files ADD app_key TEXT; 2 ALTER TABLE files ADD app_key TEXT;
3 Update files set file_from = 'ByteBankWebClient'; 3 Update files set file_from = 'ByteBankWebClient';
4 4
5 -CREATE INDEX IF NOT EXISTS idx_files_app_key ON metadata.files USING btree(app_key);  
  5 +CREATE INDEX IF NOT EXISTS idx_files_app_key ON metadata.files USING btree(app_key);
  6 +
  7 +
  8 +alter table metadata.tables add column apply_at timestamptz;
  9 +update metadata.tables set apply_at = null where table_type in ('MainTable','SubTable','SideTable') and apply_at is null;
@@ -16,7 +16,7 @@ import ( @@ -16,7 +16,7 @@ import (
16 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/port/event" 16 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/port/event"
17 ) 17 )
18 18
19 -const Version = "v1.3.0" 19 +const Version = "v1.4.0"
20 20
21 func main() { 21 func main() {
22 defer func() { 22 defer func() {
@@ -27,6 +27,9 @@ type TableObjectDto struct { @@ -27,6 +27,9 @@ type TableObjectDto struct {
27 InConflict bool `json:"inConflict"` 27 InConflict bool `json:"inConflict"`
28 // 表字段 28 // 表字段
29 Fields []*domain.Field `json:"fields"` 29 Fields []*domain.Field `json:"fields"`
  30 + // 引用于时间
  31 + ApplyAt int64 `json:"-"`
  32 + ApplyString string `json:"applyAtString"`
30 } 33 }
31 34
32 func (d *TableObjectDto) Load(m *domain.Table) *TableObjectDto { 35 func (d *TableObjectDto) Load(m *domain.Table) *TableObjectDto {
@@ -40,6 +43,8 @@ func (d *TableObjectDto) Load(m *domain.Table) *TableObjectDto { @@ -40,6 +43,8 @@ func (d *TableObjectDto) Load(m *domain.Table) *TableObjectDto {
40 d.Module = m.TableInfo.ApplyOnModule 43 d.Module = m.TableInfo.ApplyOnModule
41 } 44 }
42 d.Fields = make([]*domain.Field, 0) 45 d.Fields = make([]*domain.Field, 0)
  46 + d.ApplyAt = m.ApplyAt.Unix()
  47 + d.ApplyString = m.ApplyAt.Format("2006-01-02 15:00")
43 return d 48 return d
44 } 49 }
45 50
@@ -16,6 +16,7 @@ import ( @@ -16,6 +16,7 @@ import (
16 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks" 16 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks"
17 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/utils" 17 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/utils"
18 "strings" 18 "strings"
  19 + "time"
19 ) 20 )
20 21
21 // 表服务 22 // 表服务
@@ -424,8 +425,10 @@ func (tableService *TableService) ApplyOn(ctx *domain.Context, cmd *command.Appl @@ -424,8 +425,10 @@ func (tableService *TableService) ApplyOn(ctx *domain.Context, cmd *command.Appl
424 } 425 }
425 if table.TableInfo == nil { 426 if table.TableInfo == nil {
426 table.TableInfo = domain.NewTableInfo().SetApplyOn(cmd.Module) 427 table.TableInfo = domain.NewTableInfo().SetApplyOn(cmd.Module)
  428 + table.ApplyAt = time.Now()
427 } else { 429 } else {
428 table.TableInfo.SetApplyOn(cmd.Module) 430 table.TableInfo.SetApplyOn(cmd.Module)
  431 + table.ApplyAt = time.Now()
429 } 432 }
430 defer func() { 433 defer func() {
431 domainService.AsyncEvent(domain.NewEventTable(ctx, domain.TableApplyOnEvent).WithTable(table).WithMetadata("module", cmd.Module)) 434 domainService.AsyncEvent(domain.NewEventTable(ctx, domain.TableApplyOnEvent).WithTable(table).WithMetadata("module", cmd.Module))
@@ -124,9 +124,11 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab @@ -124,9 +124,11 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab
124 sort.Slice(response, func(i, j int) bool { 124 sort.Slice(response, func(i, j int) bool {
125 item1 := response[i] 125 item1 := response[i]
126 item2 := response[j] 126 item2 := response[j]
127 - //k1 := fmt.Sprintf("%v-%v-%v", item1.TableType, item1.ParentId, item1.Id)  
128 - //k2 := fmt.Sprintf("%v-%v-%v", item2.TableType, item2.ParentId, item2.Id)  
129 - //return k1 < k2 127 + // 拆解模块按应用时间倒叙排列
  128 + if domain.AssertTableType(item1.TableType, domain.MainTable, domain.SubTable, domain.SideTable) &&
  129 + domain.AssertTableType(item2.TableType, domain.MainTable, domain.SubTable, domain.SideTable) {
  130 + return item1.ApplyAt > item2.ApplyAt
  131 + }
130 return item1.Id < item2.Id 132 return item1.Id < item2.Id
131 }) 133 })
132 return map[string]interface{}{ 134 return map[string]interface{}{
@@ -45,7 +45,8 @@ type Table struct { @@ -45,7 +45,8 @@ type Table struct {
45 Context *Context `json:"context"` 45 Context *Context `json:"context"`
46 // 表信息 46 // 表信息
47 TableInfo *TableInfo `json:"tableInfo"` 47 TableInfo *TableInfo `json:"tableInfo"`
48 - 48 + // 应用于的时间
  49 + ApplyAt time.Time `json:"applyAt"`
49 // 表头行号 从0开始 50 // 表头行号 从0开始
50 HeaderRow int `json:"-"` 51 HeaderRow int `json:"-"`
51 } 52 }
@@ -41,4 +41,6 @@ type Table struct { @@ -41,4 +41,6 @@ type Table struct {
41 Context *domain.Context `comment:"扩展"` 41 Context *domain.Context `comment:"扩展"`
42 // 表信息 42 // 表信息
43 TableInfo *domain.TableInfo `comment:"表信息"` 43 TableInfo *domain.TableInfo `comment:"表信息"`
  44 + // 应用于的时间
  45 + ApplyAt time.Time `comment:"应用于的时间"`
44 } 46 }
@@ -27,5 +27,6 @@ func TransformToTableDomainModelFromPgModels(tableModel *models.Table) (*domain. @@ -27,5 +27,6 @@ func TransformToTableDomainModelFromPgModels(tableModel *models.Table) (*domain.
27 RowCount: tableModel.RowCount, 27 RowCount: tableModel.RowCount,
28 Context: tableModel.Context, 28 Context: tableModel.Context,
29 TableInfo: tableModel.TableInfo, 29 TableInfo: tableModel.TableInfo,
  30 + ApplyAt: tableModel.ApplyAt,
30 }, nil 31 }, nil
31 } 32 }
@@ -33,6 +33,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err @@ -33,6 +33,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err
33 "row_count", 33 "row_count",
34 "context", 34 "context",
35 "table_info", 35 "table_info",
  36 + "apply_at",
36 } 37 }
37 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlbuilder.RemoveSqlFields(sqlBuildFields, "table_id", "deleted_at")) 38 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlbuilder.RemoveSqlFields(sqlBuildFields, "table_id", "deleted_at"))
38 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlbuilder.RemoveSqlFields(sqlBuildFields, "table_id", "deleted_at")) 39 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlbuilder.RemoveSqlFields(sqlBuildFields, "table_id", "deleted_at"))
@@ -59,6 +60,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err @@ -59,6 +60,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err
59 &table.RowCount, 60 &table.RowCount,
60 &table.Context, 61 &table.Context,
61 &table.TableInfo, 62 &table.TableInfo,
  63 + &table.ApplyAt,
62 ), 64 ),
63 fmt.Sprintf("INSERT INTO metadata.tables (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), 65 fmt.Sprintf("INSERT INTO metadata.tables (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
64 table.TableType, 66 table.TableType,
@@ -75,6 +77,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err @@ -75,6 +77,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err
75 table.RowCount, 77 table.RowCount,
76 table.Context, 78 table.Context,
77 table.TableInfo, 79 table.TableInfo,
  80 + table.ApplyAt,
78 ); err != nil { 81 ); err != nil {
79 return table, err 82 return table, err
80 } 83 }
@@ -99,6 +102,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err @@ -99,6 +102,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err
99 &table.RowCount, 102 &table.RowCount,
100 &table.Context, 103 &table.Context,
101 &table.TableInfo, 104 &table.TableInfo,
  105 + &table.ApplyAt,
102 ), 106 ),
103 fmt.Sprintf("UPDATE metadata.tables SET %s WHERE table_id=? and version=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), 107 fmt.Sprintf("UPDATE metadata.tables SET %s WHERE table_id=? and version=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
104 table.TableType, 108 table.TableType,
@@ -115,6 +119,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err @@ -115,6 +119,7 @@ func (repository *TableRepository) Save(table *domain.Table) (*domain.Table, err
115 table.RowCount, 119 table.RowCount,
116 table.Context, 120 table.Context,
117 table.TableInfo, 121 table.TableInfo,
  122 + table.ApplyAt,
118 table.Identify(), 123 table.Identify(),
119 oldVersion, 124 oldVersion,
120 ); err != nil { 125 ); err != nil {