package main

import (
	"database/sql"
	"fmt"
	"log"
	"os"
	"regexp"
	"strings"

	_ "github.com/go-sql-driver/mysql"

	"leadb2b.org/internal/config"
)

func main() {
	cfg, err := config.Load()
	if err != nil {
		log.Fatal(err)
	}
	dsn := cfg.AppDBDSN
	if dsn == "" {
		log.Fatal("APP_DB_DSN ou APP_DB_HOST/USER não configurados")
	}
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()
	if err := db.Ping(); err != nil {
		log.Fatal(err)
	}

	sqlBytes, err := os.ReadFile("migrations/001_initial.sql")
	if err != nil {
		log.Fatal(err)
	}
	body := stripSQLComments(string(sqlBytes))
	for _, stmt := range strings.Split(body, ";") {
		stmt = strings.TrimSpace(stmt)
		if stmt == "" {
			continue
		}
		if _, err := db.Exec(stmt); err != nil {
			log.Printf("warn: %v", err)
		}
	}
	fmt.Println("Migration concluída.")
}

func stripSQLComments(s string) string {
	lineComment := regexp.MustCompile(`(?m)--.*$`)
	return lineComment.ReplaceAllString(s, "")
}
