Refactor vendor mappings to canonical PN catalog
This commit is contained in:
89
cmd/dbcheck/main.go
Normal file
89
cmd/dbcheck/main.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"git.mchus.pro/mchus/priceforge/internal/appstate"
|
||||
"git.mchus.pro/mchus/priceforge/internal/config"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
func main() {
|
||||
configPathFlag := flag.String("config", "", "path to config file")
|
||||
flag.Parse()
|
||||
|
||||
configPath, err := appstate.ResolveConfigPath(strings.TrimSpace(*configPathFlag))
|
||||
if err != nil {
|
||||
fatalf("resolve config path: %v", err)
|
||||
}
|
||||
cfg, err := config.Load(configPath)
|
||||
if err != nil {
|
||||
fatalf("load config: %v", err)
|
||||
}
|
||||
|
||||
db, err := sql.Open("mysql", cfg.Database.DSN())
|
||||
if err != nil {
|
||||
fatalf("open database: %v", err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
columnQuery := `
|
||||
SELECT column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = DATABASE() AND table_name = 'qt_schema_migrations'
|
||||
ORDER BY ordinal_position
|
||||
`
|
||||
columns, err := db.Query(columnQuery)
|
||||
if err != nil {
|
||||
fatalf("query migration columns: %v", err)
|
||||
}
|
||||
var migrationColumns []string
|
||||
for columns.Next() {
|
||||
var column string
|
||||
if err := columns.Scan(&column); err != nil {
|
||||
fatalf("scan migration column: %v", err)
|
||||
}
|
||||
migrationColumns = append(migrationColumns, column)
|
||||
}
|
||||
_ = columns.Close()
|
||||
fmt.Printf("qt_schema_migrations columns => %s\n", strings.Join(migrationColumns, ","))
|
||||
|
||||
migrationNameColumn := "name"
|
||||
for _, column := range migrationColumns {
|
||||
if strings.EqualFold(column, "version") {
|
||||
migrationNameColumn = column
|
||||
break
|
||||
}
|
||||
if strings.EqualFold(column, "filename") {
|
||||
migrationNameColumn = column
|
||||
break
|
||||
}
|
||||
if strings.EqualFold(column, "name") {
|
||||
migrationNameColumn = column
|
||||
}
|
||||
}
|
||||
|
||||
checks := []string{
|
||||
fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM qt_schema_migrations WHERE %s='032_drop_legacy_vendor_mapping_tables.sql')", migrationNameColumn),
|
||||
`SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'lot_partnumbers'`,
|
||||
`SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'qt_lot_bundles'`,
|
||||
`SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'qt_lot_bundle_items'`,
|
||||
`SELECT COUNT(*) FROM qt_partnumber_book_items`,
|
||||
}
|
||||
for _, q := range checks {
|
||||
var value any
|
||||
if err := db.QueryRow(q).Scan(&value); err != nil {
|
||||
fatalf("query failed: %s: %v", q, err)
|
||||
}
|
||||
fmt.Printf("%s => %v\n", q, value)
|
||||
}
|
||||
}
|
||||
|
||||
func fatalf(format string, args ...any) {
|
||||
fmt.Fprintf(os.Stderr, format+"\n", args...)
|
||||
os.Exit(1)
|
||||
}
|
||||
Reference in New Issue
Block a user