package main import ( "database/sql" "log" "os" "git.wntrmute.dev/kyle/mcias/api" _ "github.com/mattn/go-sqlite3" "github.com/spf13/cobra" "github.com/spf13/viper" ) var serverCmd = &cobra.Command{ Use: "server", Short: "Start the MCIAS server", Long: `Start the MCIAS server which provides authentication services. The server will listen on the specified address and connect to the specified database.`, Run: func(cmd *cobra.Command, args []string) { runServer() }, } func init() { rootCmd.AddCommand(serverCmd) } func runServer() { dbPath := viper.GetString("db") addr := viper.GetString("addr") logger := log.New(os.Stdout, "MCIAS: ", log.LstdFlags) db, err := sql.Open("sqlite3", dbPath) if err != nil { logger.Fatalf("Failed to open database: %v", err) } defer db.Close() server := api.NewServer(db, logger) logger.Printf("Starting MCIAS server on %s", addr) if err := server.Start(addr); err != nil { logger.Fatalf("Server error: %v", err) } }