feat: update ingest, registry, and UI flows

This commit is contained in:
2026-02-15 21:50:35 +03:00
parent e6eca7cd50
commit 5518c3b405
35 changed files with 2615 additions and 497 deletions

View File

@@ -0,0 +1,59 @@
package main
import (
"database/sql"
"fmt"
"log"
"github.com/go-sql-driver/mysql"
"reanimator/internal/config"
"reanimator/internal/repository/migrate"
)
func main() {
cfg, err := config.Load()
if err != nil {
log.Fatalf("load config: %v", err)
}
if cfg.DatabaseDSN == "" {
log.Fatal("DATABASE_DSN is required")
}
parsed, err := mysql.ParseDSN(cfg.DatabaseDSN)
if err != nil {
log.Fatalf("parse DATABASE_DSN: %v", err)
}
if parsed.DBName == "" {
log.Fatal("DATABASE_DSN must include database name")
}
dbName := parsed.DBName
adminCfg := *parsed
adminCfg.DBName = ""
adminDSN := adminCfg.FormatDSN()
adminDB, err := sql.Open("mysql", adminDSN)
if err != nil {
log.Fatalf("open admin connection: %v", err)
}
defer adminDB.Close()
if _, err := adminDB.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS `%s`", dbName)); err != nil {
log.Fatalf("drop database: %v", err)
}
if _, err := adminDB.Exec(fmt.Sprintf("CREATE DATABASE `%s`", dbName)); err != nil {
log.Fatalf("create database: %v", err)
}
appDB, err := sql.Open("mysql", cfg.DatabaseDSN)
if err != nil {
log.Fatalf("open app database: %v", err)
}
defer appDB.Close()
if err := migrate.EnsureSchema(appDB, cfg.MigrationsDir); err != nil {
log.Fatalf("apply schema: %v", err)
}
log.Printf("database %s has been recreated and initialized", dbName)
}