fix: use custom TableName() for dump/restore table resolution
RegisteredTableNames() was using the xorm name mapper to derive table names from Go struct type names, ignoring custom TableName() methods. This caused `vikunja dump` to look for `database_notification` instead of the actual table `notifications`, resulting in a fatal error. Fixes go-vikunja/vikunja#2464
This commit is contained in:
parent
6d2bf1f084
commit
1e0d29e090
12
pkg/db/db.go
12
pkg/db/db.go
|
|
@ -60,13 +60,17 @@ func RegisterTables(tables []interface{}) {
|
||||||
// RegisteredTableNames returns the table names of all registered Vikunja tables.
|
// RegisteredTableNames returns the table names of all registered Vikunja tables.
|
||||||
func RegisteredTableNames() []string {
|
func RegisteredTableNames() []string {
|
||||||
mapper := x.GetTableMapper()
|
mapper := x.GetTableMapper()
|
||||||
names := make([]string, 0, len(registeredTables)+1)
|
tableNames := make([]string, 0, len(registeredTables)+1)
|
||||||
for _, bean := range registeredTables {
|
for _, bean := range registeredTables {
|
||||||
names = append(names, mapper.Obj2Table(reflect.Indirect(reflect.ValueOf(bean)).Type().Name()))
|
if tn, ok := bean.(interface{ TableName() string }); ok {
|
||||||
|
tableNames = append(tableNames, tn.TableName())
|
||||||
|
} else {
|
||||||
|
tableNames = append(tableNames, mapper.Obj2Table(reflect.Indirect(reflect.ValueOf(bean)).Type().Name()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// The xormigrate migration tracking table is not registered via GetTables()
|
// The xormigrate migration tracking table is not registered via GetTables()
|
||||||
names = append(names, "migration")
|
tableNames = append(tableNames, "migration")
|
||||||
return names
|
return tableNames
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDBEngine initializes a db engine from the config
|
// CreateDBEngine initializes a db engine from the config
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue