github.com/sharovik/devbot@v1.0.1-0.20240308094637-4a0387c40516/scripts/update/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 6 "github.com/sharovik/devbot/internal/service/schedule" 7 8 "github.com/sharovik/devbot/internal/container" 9 "github.com/sharovik/devbot/internal/database" 10 "github.com/sharovik/devbot/internal/log" 11 "github.com/sharovik/devbot/internal/service/definedevents" 12 "github.com/sharovik/devbot/scripts/update/migrations" 13 ) 14 15 const ( 16 descriptionEventAlias = "The event alias for which Update method will be called" 17 ) 18 19 var ( 20 m = []database.BaseMigrationInterface{ 21 migrations.ExampleMigration{}, 22 migrations.EventsTriggersHistoryMigration{}, 23 migrations.UpdateEventsTriggersHistoryMigration{}, 24 } 25 ) 26 27 func main() { 28 if err := run(); err != nil { 29 if err := container.C.Dictionary.CloseDatabaseConnection(); err != nil { 30 log.Logger().AddError(err).Msg("Failed to close connection") 31 } 32 } 33 } 34 35 func run() error { 36 cnt, err := container.Init() 37 if err != nil { 38 return err 39 } 40 41 container.C = cnt 42 43 definedevents.InitializeDefinedEvents() 44 schedule.InitS(container.C.Config, container.C.Dictionary.GetDBClient(), container.C.DefinedEvents) 45 46 if err := runMigrations(); err != nil { 47 log.Logger().AddError(err).Msg("Failed to run migrations") 48 return err 49 } 50 51 eventAlias := parseEventAlias() 52 53 if eventAlias != "" { 54 if container.C.DefinedEvents[eventAlias] == nil { 55 log.Logger().Info().Msg("Event is not defined in the defined-events") 56 return nil 57 } 58 59 if err := container.C.DefinedEvents[eventAlias].Update(); err != nil { 60 log.Logger().Info().Msg("Failed to update the event. Error:" + err.Error()) 61 return err 62 } 63 64 log.Logger().Info().Msg("Done") 65 return nil 66 } 67 68 log.Logger().Debug().Msg("Trying to update all defined events if it's possible") 69 for eventAlias, event := range container.C.DefinedEvents { 70 if err := event.Update(); err != nil { 71 log.Logger().AddError(err).Str("event_alias", eventAlias).Msg("Failed to update the event.") 72 } 73 } 74 75 log.Logger().Info().Msg("Done") 76 return nil 77 } 78 79 func runMigrations() error { 80 for _, migration := range m { 81 container.C.MigrationService.SetMigration(migration) 82 } 83 84 if err := container.C.MigrationService.RunMigrations(); err != nil { 85 return err 86 } 87 88 return nil 89 } 90 91 func parseEventAlias() string { 92 eventAlias := flag.String("event_alias", "", descriptionEventAlias) 93 flag.Parse() 94 95 log.Logger().Info().Str("event_alias", *eventAlias).Msg("Parsed event alias") 96 return *eventAlias 97 }