From b33127db6c06f9aa68b3b2d6e1f4932013d93577 Mon Sep 17 00:00:00 2001 From: ~wispem-wantex Date: Tue, 8 Sep 2026 15:31:14 -0700 Subject: [PATCH] codegen: make generated code use 'must' instead of 'flowutils' --- cmd/subcmd_generate_models.go | 3 +- pkg/codegen/modelgenerate/ast_helpers.go | 12 +++++-- pkg/codegen/modelgenerate/generate_model.go | 35 ++++++++----------- .../modelgenerate/generate_testfile.go | 7 ++-- pkg/codegen/tpl/db_test.go.tpl | 4 +-- 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/cmd/subcmd_generate_models.go b/cmd/subcmd_generate_models.go index 9684d52..dab7543 100644 --- a/cmd/subcmd_generate_models.go +++ b/cmd/subcmd_generate_models.go @@ -51,10 +51,9 @@ var generate_model = &cobra.Command{ Path: &ast.BasicLit{Kind: token.STRING, Value: `"git.offline-twitter.com/offline-labs/gas-stack/pkg/db"`}, }, &ast.ImportSpec{ - Name: ast.NewIdent("."), Path: &ast.BasicLit{ Kind: token.STRING, - Value: `"git.offline-twitter.com/offline-labs/gas-stack/pkg/flowutils"`, + Value: `"git.offline-twitter.com/offline-labs/gas-stack/pkg/must"`, }, }, }, diff --git a/pkg/codegen/modelgenerate/ast_helpers.go b/pkg/codegen/modelgenerate/ast_helpers.go index 4ce56f1..78355db 100644 --- a/pkg/codegen/modelgenerate/ast_helpers.go +++ b/pkg/codegen/modelgenerate/ast_helpers.go @@ -27,10 +27,18 @@ const ( // we don't have to do that. var TrailingComments = map[ast.Node]string{} -// mustCall wraps a call expression in Must(...), producing AST for Must(inner). +// mustCall wraps a call expression in must.Get(...), producing AST for must.Get(inner). func mustCall(inner ast.Expr) *ast.CallExpr { return &ast.CallExpr{ - Fun: ast.NewIdent("Must"), + Fun: &ast.SelectorExpr{X: ast.NewIdent("must"), Sel: ast.NewIdent("Get")}, + Args: []ast.Expr{inner}, + } +} + +// doCall wraps a call expression in must.Do(...), producing AST for must.Do(inner). +func doCall(inner ast.Expr) *ast.CallExpr { + return &ast.CallExpr{ + Fun: &ast.SelectorExpr{X: ast.NewIdent("must"), Sel: ast.NewIdent("Do")}, Args: []ast.Expr{inner}, } } diff --git a/pkg/codegen/modelgenerate/generate_model.go b/pkg/codegen/modelgenerate/generate_model.go index 3ac0142..96e1074 100644 --- a/pkg/codegen/modelgenerate/generate_model.go +++ b/pkg/codegen/modelgenerate/generate_model.go @@ -333,7 +333,7 @@ func GenerateSaveItemFunc(tbl schema.Table) *ast.FuncDecl { }, } if !hasFks { - // No foreign key checking needed; just use `Must` for brevity + // No foreign key checking needed; just use `must.Get` for brevity return []ast.Stmt{&ast.AssignStmt{ Lhs: []ast.Expr{ast.NewIdent("result")}, Tok: token.DEFINE, @@ -660,29 +660,24 @@ func GenerateGetAllItemsFunc(tbl schema.Table) *ast.FuncDecl { {Names: []*ast.Ident{ast.NewIdent("ret")}, Type: &ast.ArrayType{Elt: ast.NewIdent(tbl.GoTypeName)}}, }} - selectCall := &ast.CallExpr{ - Fun: ast.NewIdent("PanicIf"), + selectCall := doCall(&ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: dbDB, + Sel: ast.NewIdent("Select"), + }, Args: []ast.Expr{ - &ast.CallExpr{ - Fun: &ast.SelectorExpr{ - X: dbDB, - Sel: ast.NewIdent("Select"), - }, - Args: []ast.Expr{ - &ast.UnaryExpr{Op: token.AND, X: ast.NewIdent("ret")}, - &ast.BinaryExpr{ - X: &ast.BinaryExpr{ - X: &ast.BasicLit{Kind: token.STRING, Value: "`select `"}, - Op: token.ADD, - Y: SQLFieldsConstIdent(tbl), - }, - Op: token.ADD, - Y: &ast.BasicLit{Kind: token.STRING, Value: "` from " + tbl.TableName + "`"}, - }, + &ast.UnaryExpr{Op: token.AND, X: ast.NewIdent("ret")}, + &ast.BinaryExpr{ + X: &ast.BinaryExpr{ + X: &ast.BasicLit{Kind: token.STRING, Value: "`select `"}, + Op: token.ADD, + Y: SQLFieldsConstIdent(tbl), }, + Op: token.ADD, + Y: &ast.BasicLit{Kind: token.STRING, Value: "` from " + tbl.TableName + "`"}, }, }, - } + }) funcBody := &ast.BlockStmt{ List: []ast.Stmt{ diff --git a/pkg/codegen/modelgenerate/generate_testfile.go b/pkg/codegen/modelgenerate/generate_testfile.go index e29cfa5..a40187c 100644 --- a/pkg/codegen/modelgenerate/generate_testfile.go +++ b/pkg/codegen/modelgenerate/generate_testfile.go @@ -288,7 +288,7 @@ func GenerateModelTestAST(tbl pkgschema.Table, schema pkgschema.Schema, gomodNam BlankLine(), Comment("Load"), - // item2 := Must(TestDB.GetItemByID(item.ID)) + // item2 := must.Get(TestDB.GetItemByID(item.ID)) &ast.AssignStmt{ Lhs: []ast.Expr{testObj2}, Tok: token.DEFINE, @@ -319,7 +319,7 @@ func GenerateModelTestAST(tbl pkgschema.Table, schema pkgschema.Schema, gomodNam Args: []ast.Expr{&ast.UnaryExpr{Op: token.AND, X: testObj}}, }}, - // item2 = Must(TestDB.GetItemByID(item.ID)) + // item2 = must.Get(TestDB.GetItemByID(item.ID)) &ast.AssignStmt{ Lhs: []ast.Expr{testObj2}, Tok: token.ASSIGN, @@ -445,8 +445,7 @@ func GenerateModelTestAST(tbl pkgschema.Table, schema pkgschema.Schema, gomodNam Name: ast.NewIdent("."), }, &ast.ImportSpec{ - Path: &ast.BasicLit{Kind: token.STRING, Value: `"git.offline-twitter.com/offline-labs/gas-stack/pkg/flowutils"`}, - Name: ast.NewIdent("."), + Path: &ast.BasicLit{Kind: token.STRING, Value: `"git.offline-twitter.com/offline-labs/gas-stack/pkg/must"`}, }, &ast.ImportSpec{ Path: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf(`"%s/pkg/%s"`, gomodName, packageName)}, diff --git a/pkg/codegen/tpl/db_test.go.tpl b/pkg/codegen/tpl/db_test.go.tpl index 8f61eab..5e90e8b 100644 --- a/pkg/codegen/tpl/db_test.go.tpl +++ b/pkg/codegen/tpl/db_test.go.tpl @@ -3,7 +3,7 @@ package db_test import ( "fmt" - . "git.offline-twitter.com/offline-labs/gas-stack/pkg/flowutils" + "git.offline-twitter.com/offline-labs/gas-stack/pkg/must" . "{{ .ModuleName }}/pkg/db" ) @@ -14,6 +14,6 @@ func init() { TestDB = MakeDB("tmp") } func MakeDB(dbName string) *DB { - db := Must(Create(fmt.Sprintf("file:%s?mode=memory&cache=shared", dbName))) + db := must.Get(Create(fmt.Sprintf("file:%s?mode=memory&cache=shared", dbName))) return db }