diff --git a/main.go b/main.go index 36aa1d2..5458dd4 100644 --- a/main.go +++ b/main.go @@ -10,11 +10,15 @@ import ( "github.com/go-webauthn/webauthn/webauthn" "github.com/mstarongithub/passkey" "github.com/rs/zerolog/log" + "gorm.io/driver/postgres" + "gorm.io/gorm" "git.mstar.dev/mstar/linstrom/config" "git.mstar.dev/mstar/linstrom/server" "git.mstar.dev/mstar/linstrom/shared" "git.mstar.dev/mstar/linstrom/storage" + storagenew "git.mstar.dev/mstar/linstrom/storage-new" + "git.mstar.dev/mstar/linstrom/storage-new/dbgen" "git.mstar.dev/mstar/linstrom/storage/cache" ) @@ -45,7 +49,16 @@ func main() { if *shared.FlagConfigOnly { return } + if *shared.FlagStartNew { + log.Info().Msg("Starting new system") + newServer() + } else { + log.Info().Msg("Starting old system") + oldServer() + } +} +func oldServer() { storageCache, err := cache.NewCache( config.GlobalConfig.Storage.MaxInMemoryCacheSize, config.GlobalConfig.Storage.RedisUrl, @@ -93,3 +106,22 @@ func main() { // TODO: Set up queues // TODO: Set up plugins } + +func newServer() { + db, err := gorm.Open( + postgres.Open(config.GlobalConfig.Storage.BuildPostgresDSN()), + &gorm.Config{ + Logger: shared.NewGormLogger(log.Logger), + }, + ) + if err != nil { + log.Fatal().Err(err).Msg("Failed to start db") + } + dbgen.SetDefault(db) + if err = storagenew.Migrate(db); err != nil { + log.Fatal().Err(err).Msg("Failed to automigrate structure") + } + if err = storagenew.InsertSelf(); err != nil { + log.Fatal().Err(err).Msg("Failed to insert self properly") + } +} diff --git a/shared/flags.go b/shared/flags.go index a0d1c16..7769c64 100644 --- a/shared/flags.go +++ b/shared/flags.go @@ -19,6 +19,7 @@ var ( false, "If set, the server will only validate the config (or write the default one) and then quit", ) + FlagStartNew *bool = flag.Bool("new", false, "Start the new system") ) func flagUsage() {