Add cli flag for initializing tables instead of creating them at startup

master
Joca 2025-04-16 22:54:09 -03:00
parent 55908bb215
commit fef473199c
Signed by: jocadbz
GPG Key ID: B1836DCE2F50BDF7
1 changed files with 23 additions and 9 deletions

18
main.go
View File

@ -3,6 +3,7 @@ package main
import ( import (
"database/sql" "database/sql"
"encoding/json" "encoding/json"
"flag"
"fmt" "fmt"
"html/template" "html/template"
"log" "log"
@ -219,6 +220,11 @@ func ensureAdminUser(db *sql.DB, config *handlers.Config) error {
} }
func main() { 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") config, err := loadConfig("config/config.json")
if err != nil { if err != nil {
log.Fatal("Error loading config:", err) log.Fatal("Error loading config:", err)
@ -231,18 +237,26 @@ func main() {
} }
defer db.Close() defer db.Close()
// Create tables if they don't exist // Perform initialization if the flag is set
if *initialize {
log.Println("Initializing database...")
err = createTablesIfNotExist(db) err = createTablesIfNotExist(db)
if err != nil { if err != nil {
log.Fatal("Error creating database tables:", err) log.Fatal("Error creating database tables:", err)
} }
// Ensure admin user exists
err = ensureAdminUser(db, config) err = ensureAdminUser(db, config)
if err != nil { if err != nil {
log.Fatal("Error ensuring admin user:", err) log.Fatal("Error ensuring admin user:", err)
} }
log.Println("Initialization completed successfully. Exiting.")
return
}
// Normal startup (without automatic table creation)
log.Println("Starting ThreadR server...")
dir, err := os.Getwd() dir, err := os.Getwd()
if err != nil { if err != nil {
log.Fatal("Error getting working directory:", err) log.Fatal("Error getting working directory:", err)