diff options
author | Grail Finder <wohilas@gmail.com> | 2025-03-29 11:12:53 +0300 |
---|---|---|
committer | Grail Finder <wohilas@gmail.com> | 2025-03-29 11:12:53 +0300 |
commit | 3921db6166e2da895257496bb76dd115556699d3 (patch) | |
tree | 1be4f739121761085f69cb7706c60dbbe98a93e9 /cmd/start.go |
init
Diffstat (limited to 'cmd/start.go')
-rw-r--r-- | cmd/start.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/cmd/start.go b/cmd/start.go new file mode 100644 index 0000000..af46d79 --- /dev/null +++ b/cmd/start.go @@ -0,0 +1,47 @@ +package cmd + +import ( + "demoon/config" + "demoon/internal/crons" + "demoon/internal/database/repos" + database "demoon/internal/database/sql" + "demoon/internal/server" + "context" + "os" + + "log/slog" + + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +func init() { + rootCmd.AddCommand(startCmd) +} + +var startCmd = &cobra.Command{ + Use: "start", + Short: "Start data server", + Long: `Start data server`, + Run: func(cmd *cobra.Command, args []string) { + log := slog.New(slog.NewJSONHandler(os.Stdout, + &slog.HandlerOptions{Level: slog.LevelDebug, AddSource: true})) + // load server configuration from server + if viper.ConfigFileUsed() != "" { + log.Debug("Configuration file loaded", "section", "init", + "path", viper.ConfigFileUsed()) + } + cfg := config.LoadConfig(viper.GetViper()) + db, err := database.Init(cfg.DBURI) + if err != nil { + log.Error("failed to connect to db", "error", err) + return + } + repo := repos.NewProvider(db.Conn) + srv := server.NewServer(cfg, log, repo) + cron := crons.NewCron(context.Background(), repo) + cron.StartCronJobs() + // listen for new messages + srv.Listen() + }, +} |