mirror of
https://github.com/zhufuyi/sponge.git
synced 2025-12-24 10:40:55 +08:00
fix: whitelist names of embed models
This commit is contained in:
@@ -780,9 +780,60 @@ func getModelStructCode(data tmplData, importPaths []string, isEmbed bool, jsonN
|
||||
structCode = strings.ReplaceAll(structCode, `bson:"id" json:"id"`, `bson:"_id" json:"id"`)
|
||||
}
|
||||
|
||||
tableColumnsCode, err := getTableColumnsCode(data, isEmbed)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
structCode += string(tableColumnsCode)
|
||||
|
||||
return structCode, newImportPaths, nil
|
||||
}
|
||||
|
||||
func getTableColumnsCode(data tmplData, isEmbed bool) ([]byte, error) {
|
||||
if data.DBDriver == DBDriverMongodb {
|
||||
for _, field := range data.Fields {
|
||||
if field.Name == "ID" {
|
||||
field.ColName = "_id"
|
||||
data.Fields = append(data.Fields, field)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if isEmbed {
|
||||
var fields = []tmplField{
|
||||
{
|
||||
ColName: "id",
|
||||
},
|
||||
{
|
||||
ColName: "created_at",
|
||||
},
|
||||
{
|
||||
ColName: "updated_at",
|
||||
},
|
||||
{
|
||||
ColName: "deleted_at",
|
||||
},
|
||||
}
|
||||
for _, field := range data.Fields {
|
||||
if field.Name == __mysqlModel__ {
|
||||
continue
|
||||
}
|
||||
fields = append(fields, field)
|
||||
}
|
||||
data.Fields = fields
|
||||
}
|
||||
builder := strings.Builder{}
|
||||
err := tableColumnsTmpl.Execute(&builder, data)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("tableColumnsTmpl.Execute error: %v", err)
|
||||
}
|
||||
code, err := format.Source([]byte(builder.String()))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("tableColumnsTmpl format.Source error: %v", err)
|
||||
}
|
||||
return code, err
|
||||
}
|
||||
|
||||
func getModelCode(data modelCodes) (string, error) {
|
||||
builder := strings.Builder{}
|
||||
err := modelTmpl.Execute(&builder, data)
|
||||
|
||||
Reference in New Issue
Block a user