feat(startup): print service banner after listener ready

This commit is contained in:
ryan
2026-07-13 15:49:19 +08:00
parent 26be762c3a
commit 6b6c786cfe
11 changed files with 200 additions and 13 deletions
+23 -1
View File
@@ -42,6 +42,14 @@ const (
zoneDropLegacySQLVersion int64 = 202607130001
)
// Report describes the database migration state observed during startup.
type Report struct {
Backend string
Enabled bool
Version int64
Applied bool
}
func gooseDialect() string {
if !config.Config.Database.Enabled {
return dialectSqlite
@@ -57,7 +65,7 @@ func migrationDir() string {
}
// Migrate 执行数据库迁移:全部结构变更走 goose SQL;Zone 历史域名导入在 SQL 之后自动执行。
func Migrate() {
func Migrate() Report {
gormDB := db.DB(context.Background())
if gormDB == nil {
log.Fatalf("[%s] database not initialized\n", dbType())
@@ -75,6 +83,10 @@ func Migrate() {
if err := resyncGooseVersionSequence(sqlDB); err != nil {
log.Fatalf("[%s] resync goose_db_version sequence failed: %v\n", dbType(), err)
}
previousVersion, err := goose.GetDBVersion(sqlDB)
if err != nil {
log.Fatalf("[%s] get goose version failed: %v\n", dbType(), err)
}
// 1) SQL up to zone-import marker (includes of_zones DDL; still has legacy columns).
if err := goose.UpTo(sqlDB, migrationDir(), zoneImportSQLVersion); err != nil {
log.Fatalf("[%s] goose migrate (up to zone import) failed: %v\n", dbType(), err)
@@ -91,8 +103,18 @@ func Migrate() {
}
clearSystemConfigCache()
currentVersion, err := goose.GetDBVersion(sqlDB)
if err != nil {
log.Fatalf("[%s] get migrated goose version failed: %v\n", dbType(), err)
}
log.Printf("[%s] goose migrate success\n", dbType())
return Report{
Backend: dbType(),
Enabled: true,
Version: currentVersion,
Applied: currentVersion != previousVersion,
}
}
// maybeImportZoneDomains runs legacy→Zone import only when the DB is still in the