Compare commits
3 Commits
5cbb657666
...
93b589d1b2
| Author | SHA1 | Date | |
|---|---|---|---|
| 93b589d1b2 | |||
| b0d95c5948 | |||
| 85d544152f |
@ -43,10 +43,7 @@ var generate_model = &cobra.Command{
|
|||||||
file2 := modelgenerate.GenerateModelTestAST(table, modname)
|
file2 := modelgenerate.GenerateModelTestAST(table, modname)
|
||||||
PanicIf(printer.Fprint(os.Stdout, fset, file2))
|
PanicIf(printer.Fprint(os.Stdout, fset, file2))
|
||||||
} else {
|
} else {
|
||||||
file := &ast.File{
|
decls := []ast.Decl{
|
||||||
Name: ast.NewIdent("db"), // TODO: parameterize
|
|
||||||
|
|
||||||
Decls: []ast.Decl{
|
|
||||||
&ast.GenDecl{
|
&ast.GenDecl{
|
||||||
Tok: token.IMPORT,
|
Tok: token.IMPORT,
|
||||||
Specs: []ast.Spec{
|
Specs: []ast.Spec{
|
||||||
@ -66,14 +63,22 @@ var generate_model = &cobra.Command{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
modelgenerate.GenerateIDType(table),
|
}
|
||||||
|
if !table.IsWithoutRowid {
|
||||||
|
decls = append(decls, modelgenerate.GenerateIDType(table))
|
||||||
|
}
|
||||||
|
decls = append(decls,
|
||||||
modelgenerate.GenerateModelAST(table),
|
modelgenerate.GenerateModelAST(table),
|
||||||
modelgenerate.GenerateSQLFieldsConst(table),
|
modelgenerate.GenerateSQLFieldsConst(table),
|
||||||
modelgenerate.GenerateSaveItemFunc(table),
|
modelgenerate.GenerateSaveItemFunc(table),
|
||||||
modelgenerate.GenerateDeleteItemFunc(table),
|
modelgenerate.GenerateDeleteItemFunc(table),
|
||||||
modelgenerate.GenerateGetItemByIDFunc(table),
|
modelgenerate.GenerateGetItemByIDFunc(table),
|
||||||
modelgenerate.GenerateGetAllItemsFunc(table),
|
modelgenerate.GenerateGetAllItemsFunc(table),
|
||||||
},
|
)
|
||||||
|
|
||||||
|
file := &ast.File{
|
||||||
|
Name: ast.NewIdent("db"), // TODO: parameterize
|
||||||
|
Decls: decls,
|
||||||
}
|
}
|
||||||
|
|
||||||
PanicIf(printer.Fprint(os.Stdout, fset, file))
|
PanicIf(printer.Fprint(os.Stdout, fset, file))
|
||||||
|
|||||||
@ -155,18 +155,13 @@ func GenerateSaveItemFunc(tbl schema.Table) *ast.FuncDecl {
|
|||||||
Rhs: []ast.Expr{
|
Rhs: []ast.Expr{
|
||||||
&ast.CallExpr{
|
&ast.CallExpr{
|
||||||
Fun: &ast.SelectorExpr{X: ast.NewIdent("db"), Sel: ast.NewIdent(getByIDFuncName(col.ForeignKeyTargetTable))},
|
Fun: &ast.SelectorExpr{X: ast.NewIdent("db"), Sel: ast.NewIdent(getByIDFuncName(col.ForeignKeyTargetTable))},
|
||||||
Args: []ast.Expr{
|
Args: []ast.Expr{structField},
|
||||||
structField,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Cond: &ast.CallExpr{
|
Cond: &ast.CallExpr{
|
||||||
Fun: &ast.SelectorExpr{X: ast.NewIdent("errors"), Sel: ast.NewIdent("Is")},
|
Fun: &ast.SelectorExpr{X: ast.NewIdent("errors"), Sel: ast.NewIdent("Is")},
|
||||||
Args: []ast.Expr{
|
Args: []ast.Expr{ast.NewIdent("err"), ast.NewIdent("ErrNotInDB")},
|
||||||
ast.NewIdent("err"),
|
|
||||||
ast.NewIdent("ErrNotInDB"),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Body: &ast.BlockStmt{
|
Body: &ast.BlockStmt{
|
||||||
List: []ast.Stmt{
|
List: []ast.Stmt{
|
||||||
@ -189,9 +184,7 @@ func GenerateSaveItemFunc(tbl schema.Table) *ast.FuncDecl {
|
|||||||
// Code table value. Query the table to see if it exists
|
// Code table value. Query the table to see if it exists
|
||||||
ret = append(ret, &ast.IfStmt{
|
ret = append(ret, &ast.IfStmt{
|
||||||
Init: &ast.AssignStmt{
|
Init: &ast.AssignStmt{
|
||||||
Lhs: []ast.Expr{
|
Lhs: []ast.Expr{ast.NewIdent("err")},
|
||||||
ast.NewIdent("err"),
|
|
||||||
},
|
|
||||||
Tok: token.ASSIGN,
|
Tok: token.ASSIGN,
|
||||||
Rhs: []ast.Expr{
|
Rhs: []ast.Expr{
|
||||||
&ast.CallExpr{
|
&ast.CallExpr{
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package schema
|
package schema
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"git.offline-twitter.com/offline-labs/gas-stack/pkg/textutils"
|
"git.offline-twitter.com/offline-labs/gas-stack/pkg/textutils"
|
||||||
@ -83,6 +84,23 @@ type Table struct {
|
|||||||
GoTypeName string
|
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) {
|
func (t Table) HasAutoTimestamps() (hasCreatedAt bool, hasUpdatedAt bool) {
|
||||||
for _, c := range t.Columns {
|
for _, c := range t.Columns {
|
||||||
if c.Name == "created_at" && c.Type == "integer" {
|
if c.Name == "created_at" && c.Type == "integer" {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user