Compare commits

..

No commits in common. "93b589d1b2eadb62fb35315c8b3a7b14ef5a1f37" and "5cbb6576662f552f7c0dcc29aa8236e1bfeb4d8e" have entirely different histories.

3 changed files with 39 additions and 55 deletions

View File

@ -43,7 +43,10 @@ var generate_model = &cobra.Command{
file2 := modelgenerate.GenerateModelTestAST(table, modname)
PanicIf(printer.Fprint(os.Stdout, fset, file2))
} else {
decls := []ast.Decl{
file := &ast.File{
Name: ast.NewIdent("db"), // TODO: parameterize
Decls: []ast.Decl{
&ast.GenDecl{
Tok: token.IMPORT,
Specs: []ast.Spec{
@ -63,22 +66,14 @@ var generate_model = &cobra.Command{
},
},
},
}
if !table.IsWithoutRowid {
decls = append(decls, modelgenerate.GenerateIDType(table))
}
decls = append(decls,
modelgenerate.GenerateIDType(table),
modelgenerate.GenerateModelAST(table),
modelgenerate.GenerateSQLFieldsConst(table),
modelgenerate.GenerateSaveItemFunc(table),
modelgenerate.GenerateDeleteItemFunc(table),
modelgenerate.GenerateGetItemByIDFunc(table),
modelgenerate.GenerateGetAllItemsFunc(table),
)
file := &ast.File{
Name: ast.NewIdent("db"), // TODO: parameterize
Decls: decls,
},
}
PanicIf(printer.Fprint(os.Stdout, fset, file))

View File

@ -155,13 +155,18 @@ func GenerateSaveItemFunc(tbl schema.Table) *ast.FuncDecl {
Rhs: []ast.Expr{
&ast.CallExpr{
Fun: &ast.SelectorExpr{X: ast.NewIdent("db"), Sel: ast.NewIdent(getByIDFuncName(col.ForeignKeyTargetTable))},
Args: []ast.Expr{structField},
Args: []ast.Expr{
structField,
},
},
},
},
Cond: &ast.CallExpr{
Fun: &ast.SelectorExpr{X: ast.NewIdent("errors"), Sel: ast.NewIdent("Is")},
Args: []ast.Expr{ast.NewIdent("err"), ast.NewIdent("ErrNotInDB")},
Args: []ast.Expr{
ast.NewIdent("err"),
ast.NewIdent("ErrNotInDB"),
},
},
Body: &ast.BlockStmt{
List: []ast.Stmt{
@ -184,7 +189,9 @@ func GenerateSaveItemFunc(tbl schema.Table) *ast.FuncDecl {
// Code table value. Query the table to see if it exists
ret = append(ret, &ast.IfStmt{
Init: &ast.AssignStmt{
Lhs: []ast.Expr{ast.NewIdent("err")},
Lhs: []ast.Expr{
ast.NewIdent("err"),
},
Tok: token.ASSIGN,
Rhs: []ast.Expr{
&ast.CallExpr{

View File

@ -1,7 +1,6 @@
package schema
import (
"sort"
"strings"
"git.offline-twitter.com/offline-labs/gas-stack/pkg/textutils"
@ -84,23 +83,6 @@ type Table struct {
GoTypeName string
}
// PrimaryKeyColumns returns the ordered list of columns in this table's primary key.
// This can be useful for "without rowid" tables with composite primary keys.
//
// TODO: needs test
func (t Table) PrimaryKeyColumns() []Column {
pks := make([]Column, 0)
for _, c := range t.Columns {
if c.IsPrimaryKey {
pks = append(pks, c)
}
}
sort.Slice(pks, func(i, j int) bool {
return pks[i].PrimaryKeyRank < pks[j].PrimaryKeyRank
})
return pks
}
func (t Table) HasAutoTimestamps() (hasCreatedAt bool, hasUpdatedAt bool) {
for _, c := range t.Columns {
if c.Name == "created_at" && c.Type == "integer" {