Files
eve-typesense-mirrorer/main.go

95 lines
2.0 KiB
Go

package main
import (
"context"
"flag"
"os"
logger "git.site.quack-lab.dev/dave/cylogger"
"eve-typesense-api/internal/clickhouse"
"eve-typesense-api/internal/database"
"eve-typesense-api/internal/mirror"
"eve-typesense-api/internal/typesense"
)
func main() {
flag.Parse()
logger.InitFlag()
logger.Default = logger.Default.ToFile("eve-typesense-api.log")
// MigrateTypesense()
MigrateClickhouse()
}
func MigrateTypesense() {
if err := database.Init(); err != nil {
logger.Error("Failed to initialize database: %v", err)
os.Exit(1)
}
logger.Info("Database initialized")
if err := typesense.Init(); err != nil {
logger.Error("Failed to initialize Typesense: %v", err)
os.Exit(1)
}
logger.Info("Typesense initialized")
results := mirror.Mirror(context.Background())
successCount := 0
errorCount := 0
totalDocs := int64(0)
for _, result := range results {
if result.Error != nil {
errorCount++
logger.Error("Error mirroring %s to Typesense: %v", result.TableName, result.Error)
} else {
successCount++
totalDocs += result.Count
}
}
logger.Info("Typesense mirroring complete: %d tables, %d documents, %d errors", successCount, totalDocs, errorCount)
if errorCount > 0 {
os.Exit(1)
}
}
func MigrateClickhouse() {
if err := database.Init(); err != nil {
logger.Error("Failed to initialize database: %v", err)
os.Exit(1)
}
logger.Info("Database initialized")
if err := clickhouse.Init(); err != nil {
logger.Error("Failed to initialize ClickHouse: %v", err)
os.Exit(1)
}
logger.Info("ClickHouse initialized")
results := mirror.MirrorClickHouse(context.Background())
successCount := 0
errorCount := 0
totalRows := int64(0)
for _, result := range results {
if result.Error != nil {
errorCount++
logger.Error("Error mirroring %s to ClickHouse: %v", result.TableName, result.Error)
} else {
successCount++
totalRows += result.Count
}
}
logger.Info("ClickHouse mirroring complete: %d tables, %d rows, %d errors", successCount, totalRows, errorCount)
if errorCount > 0 {
os.Exit(1)
}
}