codegen: generate getters for non-unique indexes
This commit is contained in:
@@ -432,8 +432,12 @@ func GenerateModelTestAST(tbl pkgschema.Table, schema pkgschema.Schema, gomodNam
|
||||
// Skip indexes on other tables
|
||||
continue
|
||||
}
|
||||
if index.IsUnique && len(index.Columns) == 1 {
|
||||
col := tbl.GetColumnByName(index.Columns[0])
|
||||
if len(index.Columns) != 1 || index.Columns[0] == "" {
|
||||
// Skip multi-column and expression indexes
|
||||
continue
|
||||
}
|
||||
col := tbl.GetColumnByName(index.Columns[0])
|
||||
if index.IsUnique {
|
||||
indexGets = append(indexGets, []ast.Stmt{
|
||||
// assert.Equal(t, item2, TestDB.GetItemByXYZ(...))
|
||||
&ast.ExprStmt{X: &ast.CallExpr{ // TODO: what if just delete the "ExprStmt" wrapper?
|
||||
@@ -450,9 +454,25 @@ func GenerateModelTestAST(tbl pkgschema.Table, schema pkgschema.Schema, gomodNam
|
||||
},
|
||||
}},
|
||||
}...)
|
||||
// decls = append(decls, modelgenerate.GenerateGetItemByUniqColFunc(table, table.GetColumnByName(index.Columns[0])))
|
||||
hasIndexedGets = true
|
||||
} else {
|
||||
indexGets = append(indexGets, []ast.Stmt{
|
||||
// assert.Contains(t, TestDB.GetItemsByXYZ(...), item2)
|
||||
&ast.ExprStmt{X: &ast.CallExpr{
|
||||
Fun: &ast.SelectorExpr{X: ast.NewIdent("assert"), Sel: ast.NewIdent("Contains")},
|
||||
Args: []ast.Expr{
|
||||
ast.NewIdent("t"),
|
||||
&ast.CallExpr{
|
||||
Fun: &ast.SelectorExpr{X: testDB, Sel: ast.NewIdent(
|
||||
"Get" + inflection.Plural(pkgschema.TypenameFromTablename(tbl.TableName)) + "By" + col.GoFieldName(),
|
||||
)},
|
||||
Args: []ast.Expr{&ast.SelectorExpr{X: testObj2, Sel: ast.NewIdent(col.GoFieldName())}},
|
||||
},
|
||||
testObj2,
|
||||
},
|
||||
}},
|
||||
}...)
|
||||
}
|
||||
hasIndexedGets = true
|
||||
}
|
||||
|
||||
if hasIndexedGets {
|
||||
|
||||
Reference in New Issue
Block a user