diff --git a/main.go b/main.go index 9038b4c..e72bc94 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "database/sql" "encoding/json" + "flag" "fmt" "html/template" "log" @@ -219,6 +220,11 @@ func ensureAdminUser(db *sql.DB, config *handlers.Config) error { } func main() { + // Define command-line flag for initialization + initialize := flag.Bool("initialize", false, "Initialize database tables and admin user") + flag.BoolVar(initialize, "i", false, "Short for --initialize") + flag.Parse() + config, err := loadConfig("config/config.json") if err != nil { log.Fatal("Error loading config:", err) @@ -231,17 +237,25 @@ func main() { } defer db.Close() - // Create tables if they don't exist - err = createTablesIfNotExist(db) - if err != nil { - log.Fatal("Error creating database tables:", err) + // Perform initialization if the flag is set + if *initialize { + log.Println("Initializing database...") + err = createTablesIfNotExist(db) + if err != nil { + log.Fatal("Error creating database tables:", err) + } + + err = ensureAdminUser(db, config) + if err != nil { + log.Fatal("Error ensuring admin user:", err) + } + + log.Println("Initialization completed successfully. Exiting.") + return } - // Ensure admin user exists - err = ensureAdminUser(db, config) - if err != nil { - log.Fatal("Error ensuring admin user:", err) - } + // Normal startup (without automatic table creation) + log.Println("Starting ThreadR server...") dir, err := os.Getwd() if err != nil {