mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
Upgrade xorm to v1.0.0 (#10646)
* Upgrade xorm to v1.0.0 * small nit * Fix tests * Update xorm * Update xorm * fix go.sum * fix test * Fix bug when dump * Fix bug * update xorm to latest * Fix migration test * update xorm to latest * Fix import order * Use xorm tag
This commit is contained in:
56
vendor/xorm.io/xorm/names/table_name.go
generated
vendored
Normal file
56
vendor/xorm.io/xorm/names/table_name.go
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
// Copyright 2020 The Xorm Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package names
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// TableName table name interface to define customerize table name
|
||||
type TableName interface {
|
||||
TableName() string
|
||||
}
|
||||
|
||||
var (
|
||||
tpTableName = reflect.TypeOf((*TableName)(nil)).Elem()
|
||||
tvCache sync.Map
|
||||
)
|
||||
|
||||
func GetTableName(mapper Mapper, v reflect.Value) string {
|
||||
if v.Type().Implements(tpTableName) {
|
||||
return v.Interface().(TableName).TableName()
|
||||
}
|
||||
|
||||
if v.Kind() == reflect.Ptr {
|
||||
v = v.Elem()
|
||||
if v.Type().Implements(tpTableName) {
|
||||
return v.Interface().(TableName).TableName()
|
||||
}
|
||||
} else if v.CanAddr() {
|
||||
v1 := v.Addr()
|
||||
if v1.Type().Implements(tpTableName) {
|
||||
return v1.Interface().(TableName).TableName()
|
||||
}
|
||||
} else {
|
||||
name, ok := tvCache.Load(v.Type())
|
||||
if ok {
|
||||
if name.(string) != "" {
|
||||
return name.(string)
|
||||
}
|
||||
} else {
|
||||
v2 := reflect.New(v.Type())
|
||||
if v2.Type().Implements(tpTableName) {
|
||||
tableName := v2.Interface().(TableName).TableName()
|
||||
tvCache.Store(v.Type(), tableName)
|
||||
return tableName
|
||||
}
|
||||
|
||||
tvCache.Store(v.Type(), "")
|
||||
}
|
||||
}
|
||||
|
||||
return mapper.Obj2Table(v.Type().Name())
|
||||
}
|
Reference in New Issue
Block a user