codegen: add unique index lookup funcs
This commit is contained in:
@@ -25,19 +25,19 @@ var generate_model = &cobra.Command{
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
path := Must(cmd.Flags().GetString("schema"))
|
||||
modname := Must(cmd.Flags().GetString("modname"))
|
||||
schema_sql, err := os.ReadFile(path)
|
||||
sql, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("reading path %s: %w", path, err)
|
||||
}
|
||||
db := schema.InitDB(string(schema_sql))
|
||||
tables := schema.SchemaFromDB(db).Tables
|
||||
table, isOk := tables[args[0]]
|
||||
db := schema.InitDB(string(sql))
|
||||
schema := schema.SchemaFromDB(db)
|
||||
table, isOk := schema.Tables[args[0]]
|
||||
if !isOk {
|
||||
return ErrNoSuchTable
|
||||
}
|
||||
|
||||
if Must(cmd.Flags().GetBool("test")) {
|
||||
file2 := modelgenerate.GenerateModelTestAST(table, modname)
|
||||
file2 := modelgenerate.GenerateModelTestAST(table, schema, modname)
|
||||
PanicIf(modelgenerate.FprintWithComments(os.Stdout, file2))
|
||||
} else {
|
||||
decls := []ast.Decl{
|
||||
@@ -70,8 +70,17 @@ var generate_model = &cobra.Command{
|
||||
modelgenerate.GenerateSaveItemFunc(table),
|
||||
modelgenerate.GenerateDeleteItemFunc(table),
|
||||
modelgenerate.GenerateGetItemByIDFunc(table),
|
||||
modelgenerate.GenerateGetAllItemsFunc(table),
|
||||
)
|
||||
for _, index := range schema.Indexes {
|
||||
if index.TableName != table.TableName {
|
||||
// Skip indexes on other tables
|
||||
continue
|
||||
}
|
||||
if index.IsUnique && len(index.Columns) == 1 {
|
||||
decls = append(decls, modelgenerate.GenerateGetItemByUniqColFunc(table, table.GetColumnByName(index.Columns[0])))
|
||||
}
|
||||
}
|
||||
decls = append(decls, modelgenerate.GenerateGetAllItemsFunc(table))
|
||||
|
||||
file := &ast.File{
|
||||
Name: ast.NewIdent("db"), // TODO: parameterize
|
||||
|
||||
Reference in New Issue
Block a user