feat: alias map string interface

This commit is contained in:
a631807682 2022-03-30 15:10:44 +08:00
parent 3d7019a7c2
commit 22cee85879
No known key found for this signature in database
GPG Key ID: 137D1D75522168AB
2 changed files with 28 additions and 0 deletions

View File

@ -16,6 +16,15 @@ import (
// for Config.cacheStore store PreparedStmtDB key
const preparedStmtDBKey = "preparedStmt"
// M is a convenient alias for a map[string]interface{} map, useful for
// dealing with GORM in a native way. For instance:
//
// gorm.M{"a": 1, "b": true}
//
// There's no special handling for this type in addition to what's done anyway
// for an equivalent map type.
type M = map[string]interface{}
// Config GORM config
type Config struct {
// GORM perform single create, update, delete operations in transactions by default to ensure database data integrity

View File

@ -136,6 +136,25 @@ func TestCreateFromMap(t *testing.T) {
if err := DB.Where("name = ?", "create_from_map_3").First(&result3).Error; err != nil || result3.Age != 20 {
t.Fatalf("failed to query data after create from slice of map, got error %v", err)
}
datas2 := []gorm.M{
{"Name": "create_from_M_1", "Age": 21},
{"name": "create_from_M_2", "Age": 22},
}
if err := DB.Model(&User{}).Create(&datas2).Error; err != nil {
t.Fatalf("failed to create data from slice of map, got error: %v", err)
}
var result4 User
if err := DB.Where("name = ?", "create_from_M_1").First(&result4).Error; err != nil || result4.Age != 21 {
t.Fatalf("failed to query data after create from slice of map, got error %v", err)
}
var result5 User
if err := DB.Where("name = ?", "create_from_M_2").First(&result5).Error; err != nil || result5.Age != 22 {
t.Fatalf("failed to query data after create from slice of map, got error %v", err)
}
}
func TestCreateWithAssociations(t *testing.T) {