fix race with defaultTableName field (again)

This commit is contained in:
Artemij Shepelev 2018-08-28 01:44:44 +03:00
parent b204f8f5c9
commit 2a944bca88

View File

@ -24,11 +24,16 @@ type ModelStruct struct {
PrimaryFields []*StructField PrimaryFields []*StructField
StructFields []*StructField StructFields []*StructField
ModelType reflect.Type ModelType reflect.Type
defaultTableName string defaultTableName string
l sync.Mutex
} }
// TableName returns model's table name // TableName returns model's table name
func (s *ModelStruct) TableName(db *DB) string { func (s *ModelStruct) TableName(db *DB) string {
s.l.Lock()
defer s.l.Unlock()
if s.defaultTableName == "" && db != nil && s.ModelType != nil { if s.defaultTableName == "" && db != nil && s.ModelType != nil {
// Set default table name // Set default table name
if tabler, ok := reflect.New(s.ModelType).Interface().(tabler); ok { if tabler, ok := reflect.New(s.ModelType).Interface().(tabler); ok {