12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package gen
- import (
- "bytes"
- "strings"
- "text/template"
- sqltemplate "zero/tools/goctl/model/sql/template"
- )
- func genFineOneByField(table *InnerTable) (string, error) {
- t, err := template.New("findOneByField").Parse(sqltemplate.FindOneByField)
- if err != nil {
- return "", err
- }
- list := make([]string, 0)
- for _, field := range table.Fields {
- if field.IsPrimaryKey {
- continue
- }
- if field.QueryType != QueryOne {
- continue
- }
- fineOneByFieldBuffer := new(bytes.Buffer)
- upperFields := make([]string, 0)
- in := make([]string, 0)
- expressionFields := make([]string, 0)
- expressionValuesFields := make([]string, 0)
- upperFields = append(upperFields, field.UpperCamelCase)
- in = append(in, field.LowerCamelCase+" "+field.DataType)
- expressionFields = append(expressionFields, field.SnakeCase+" = ?")
- expressionValuesFields = append(expressionValuesFields, field.LowerCamelCase)
- for _, withField := range field.WithFields {
- upperFields = append(upperFields, withField.UpperCamelCase)
- in = append(in, withField.LowerCamelCase+" "+withField.DataType)
- expressionFields = append(expressionFields, withField.SnakeCase+" = ?")
- expressionValuesFields = append(expressionValuesFields, withField.LowerCamelCase)
- }
- err = t.Execute(fineOneByFieldBuffer, map[string]interface{}{
- "in": strings.Join(in, ","),
- "upperObject": table.UpperCamelCase,
- "upperFields": strings.Join(upperFields, "And"),
- "onlyOneFiled": len(field.WithFields) == 0,
- "withCache": field.Cache,
- "containsCache": table.ContainsCache,
- "lowerObject": table.LowerCamelCase,
- "lowerField": field.LowerCamelCase,
- "snakeField": field.SnakeCase,
- "lowerPrimaryKey": table.PrimaryField.LowerCamelCase,
- "UpperPrimaryKey": table.PrimaryField.UpperCamelCase,
- "primaryKeyDefine": table.CacheKey[table.PrimaryField.SnakeCase].Define,
- "primarySnakeField": table.PrimaryField.SnakeCase,
- "primaryDataType": table.PrimaryField.DataType,
- "primaryDataTypeString": table.PrimaryField.DataType == "string",
- "upperObjectKey": table.PrimaryField.UpperCamelCase,
- "cacheKey": table.CacheKey[field.SnakeCase].Key,
- "cacheKeyVariable": table.CacheKey[field.SnakeCase].KeyVariable,
- "expression": strings.Join(expressionFields, " AND "),
- "expressionValues": strings.Join(expressionValuesFields, ", "),
- })
- if err != nil {
- return "", err
- }
- list = append(list, fineOneByFieldBuffer.String())
- }
- return strings.Join(list, ""), nil
- }
|