github.com/sharovik/devbot@v1.0.1-0.20240308094637-4a0387c40516/scripts/update/migrations/5-update-events-triggers-history-schema.go (about) 1 package migrations 2 3 import ( 4 "fmt" 5 6 "github.com/pkg/errors" 7 "github.com/sharovik/devbot/internal/container" 8 "github.com/sharovik/devbot/internal/dto/databasedto" 9 "github.com/sharovik/orm/clients" 10 "github.com/sharovik/orm/dto" 11 "github.com/sharovik/orm/query" 12 ) 13 14 type UpdateEventsTriggersHistoryMigration struct { 15 Client clients.BaseClientInterface 16 } 17 18 func (m UpdateEventsTriggersHistoryMigration) SetClient(client clients.BaseClientInterface) { 19 m.Client = client 20 } 21 22 func (m UpdateEventsTriggersHistoryMigration) GetName() string { 23 return "update-events-triggers-history-schema" 24 } 25 26 func (m UpdateEventsTriggersHistoryMigration) Execute() error { 27 client := container.C.Dictionary.GetDBClient() 28 29 q := new(clients.Query).Drop(databasedto.EventTriggerHistoryModel) 30 if _, err := client.Execute(q); err != nil { 31 return errors.Wrap(err, fmt.Sprintf("Failed to drop %s table", databasedto.EventTriggerHistoryModel.GetTableName())) 32 } 33 34 //Create events table 35 q = new(clients.Query). 36 Create(databasedto.EventTriggerHistoryModel). 37 AddIndex(dto.Index{ 38 Name: "user_id_index", 39 Target: databasedto.EventTriggerHistoryModel.GetTableName(), 40 Key: "user", 41 Unique: false, 42 }). 43 AddIndex(dto.Index{ 44 Name: "channel_index", 45 Target: databasedto.EventTriggerHistoryModel.GetTableName(), 46 Key: "channel", 47 Unique: false, 48 }). 49 AddIndex(dto.Index{ 50 Name: "created_index", 51 Target: databasedto.EventTriggerHistoryModel.GetTableName(), 52 Key: "created", 53 Unique: false, 54 }). 55 AddForeignKey(dto.ForeignKey{ 56 Name: "event_id", 57 Target: query.Reference{ 58 Table: databasedto.EventModel.GetTableName(), 59 Key: "id", 60 }, 61 With: query.Reference{ 62 Table: databasedto.EventTriggerHistoryModel.GetTableName(), 63 Key: "event_id", 64 }, 65 OnDelete: dto.CascadeAction, 66 OnUpdate: dto.NoActionAction, 67 }). 68 AddForeignKey(dto.ForeignKey{ 69 Name: "scenario_id", 70 Target: query.Reference{ 71 Table: databasedto.ScenariosModel.GetTableName(), 72 Key: "id", 73 }, 74 With: query.Reference{ 75 Table: databasedto.EventTriggerHistoryModel.GetTableName(), 76 Key: "scenario_id", 77 }, 78 OnDelete: dto.CascadeAction, 79 OnUpdate: dto.NoActionAction, 80 }) 81 if _, err := client.Execute(q); err != nil { 82 return errors.Wrap(err, fmt.Sprintf("Failed to create %s table", databasedto.EventTriggerHistoryModel.GetTableName())) 83 } 84 85 return nil 86 }