Documentation ¶
Index ¶
- Constants
- Variables
- func BuildPermissionsGoFile(permissions []PermissionTplType, permissionsFilePath string) error
- func BuildTypescriptPermissions(permissions []PermissionTplType, permissionsFilePath string) error
- func CleanFiles(name string, dir string, schemaList *schema.SchemaList, prefix, suffix string) error
- func CleanTypescriptDTOs(config *lib.Config, routes *lib.RoutesJSONContainer) error
- func ColumnMapToNames(columns map[string]string) []string
- func FetchAllPermissionsFromControllers(controllers []*lib.Controller) (map[string]string, error)
- func GenAPIDocs(config *lib.Config, routes *lib.RoutesJSONContainer)
- func GenAppBootstrapFile(basePackage string) error
- func GenControllerBootstrap(basePackageName string, dirs []string) string
- func GenDALs(tables []*schema.Table, config *lib.Config) error
- func GenGoPerms(config *lib.Config, permissions []PermissionTplType) (e error)
- func GenInterface(comment, pkgName, ifaceName, ifaceComment string, methods []string, ...) ([]byte, error)
- func GenInterface2(structName, srcFile, destDir string) error
- func GenInterfaces(srcDir, destDir string) error
- func GenModels(tables []*schema.Table, config *lib.Config) error
- func GenRoutesAndPermissions(schemaList *schema.SchemaList, controllers []*lib.Controller, dirs []string, ...) (*lib.RoutesJSONContainer, error)
- func GenTSPerms(config *lib.Config, permissions []PermissionTplType) (e error)
- func GenTSRoutes(controllers []*lib.Controller, config *lib.Config) error
- func GenerateDALsBootstrapFile(config *lib.Config, schemaList *schema.SchemaList) error
- func GenerateGoDAL(config *lib.Config, table *schema.Table, dir string) (e error)
- func GenerateTypescriptDTO(name string, columns map[string]string) ([]byte, error)
- func GenerateTypescriptModel(name string, columns map[string]string) (string, error)
- func GenerateTypescriptModels(config *lib.Config, routes *lib.RoutesJSONContainer) error
- func GenerateTypesriptDTOs(config *lib.Config, routes *lib.RoutesJSONContainer) error
- func GetChangedTables(schemaList *schema.SchemaList, tablesCache *cache.TablesCache, force bool) ([]*schema.Table, error)
- func ImportString(sb io.Writer, a, b, c string)
- func ImportStrings(sb io.Writer, columns map[string]string)
- func ImportStrings2(columns map[string]string) string
- func InheritStrings(sb io.Writer, columns map[string]string) []string
- func LoadPermissionsFromJSON() map[string]string
- func LoadRoutes(config *lib.Config) (*lib.RoutesJSONContainer, error)
- func ParseFileToGoStruct(filePath string) (*lib.GoStruct, error)
- func TSFileHeader(sb io.Writer, name string)
- type Gen
- type GoControllerBootstrapTemplateValues
- type GoModelTemplateFieldVal
- type GoModelTemplateVals
- type PermissionTplType
- type RoutesTplValues
- type TSRouteGenerator
- type TypescriptGenerator
- func (tg *TypescriptGenerator) CleanTypescriptAggregates() error
- func (tg *TypescriptGenerator) ExtractColumns(goType string) map[string]string
- func (tg *TypescriptGenerator) GenerateTypescriptAggregate(name string) ([]byte, error)
- func (tg *TypescriptGenerator) GenerateTypescriptAggregates() error
- func (tg *TypescriptGenerator) GenerateTypescriptDefaults(sb io.Writer, objectName string)
- func (tg *TypescriptGenerator) GenerateTypescriptFields(sb io.Writer, objectName string)
Constants ¶
const NullPackage = "\"gopkg.in/guregu/null.v3\""
NullPackage is the package name used for handling nulls
Variables ¶
var DALTemplate = template.Must(template.New("template-dal-file").Funcs(template.FuncMap{ "dataTypeToGoTypeString": schema.DataTypeToGoTypeString, "dataTypeToFormatString": schema.DataTypeToFormatString, "toArgName": toArgName, }).Parse(`// Generated Code; DO NOT EDIT. package dal import ( "{{ .BasePackage }}/gen/definitions/models" "github.com/macinnir/dvc/core/lib/utils/db" "github.com/macinnir/dvc/core/lib/utils/log" "github.com/macinnir/dvc/core/lib/utils/errors" "github.com/macinnir/dvc/core/lib/utils/query" "database/sql" "context" "fmt"{{ if .HasNull }} "gopkg.in/guregu/null.v3"{{ end }}{{ if or .IsDateCreated .IsLastUpdated }} "time"{{ end }} ) // {{.Table.Name}}DAL is a data repository for {{.Table.Name}} objects type {{.Table.Name}}DAL struct { db []db.IDB log log.ILog } // New{{.Table.Name}}DAL returns a new instance of {{.Table.Name}}Repo func New{{.Table.Name}}DAL(db []db.IDB, log log.ILog) *{{.Table.Name}}DAL { return &{{.Table.Name}}DAL{db, log} } func (r *{{.Table.Name}}DAL) Raw(shard int64, q string, args ...interface{}) ([]*models.{{.Table.Name}}, error) { return (&models.{{.Table.Name}}{}).Raw(r.db[shard], fmt.Sprintf(q, args...)) } func (r *{{.Table.Name}}DAL) Select(shard int64) *models.{{.Table.Name}}DALSelector { return (&models.{{.Table.Name}}{}).Select(r.db[shard]) } func (r *{{.Table.Name}}DAL) Count(shard int64) *models.{{.Table.Name}}DALCounter { return (&models.{{.Table.Name}}{}).Count(r.db[shard]) } func (r *{{.Table.Name}}DAL) Sum(shard int64, col query.Column) *models.{{.Table.Name}}DALSummer { return (&models.{{.Table.Name}}{}).Sum(r.db[shard], col) } func (r *{{.Table.Name}}DAL) Min(shard int64, col query.Column) *models.{{.Table.Name}}DALMinner { return (&models.{{.Table.Name}}{}).Min(r.db[shard], col) } func (r *{{.Table.Name}}DAL) Max(shard int64, col query.Column) *models.{{.Table.Name}}DALMaxer { return (&models.{{.Table.Name}}{}).Max(r.db[shard], col) } func (r *{{.Table.Name}}DAL) Get(shard int64) *models.{{.Table.Name}}DALGetter { return (&models.{{.Table.Name}}{}).Get(r.db[shard]) } // Create creates a new {{.Table.Name}} entry in the database func (r *{{.Table.Name}}DAL) Create(shard int64, model *models.{{.Table.Name}}) error { {{if .IsDateCreated}} model.DateCreated = time.Now().UnixNano() / 1000000{{end}} {{if .IsLastUpdated}} model.LastUpdated = time.Now().UnixNano() / 1000000 {{end}} e := model.Create(r.db[shard]) if e != nil { r.log.Errorf("{{.Table.Name}}DAL.Insert > %s", e.Error()) return e } r.log.Debugf("{{.Table.Name}}DAL.Insert(%d)", model.{{.PrimaryKey}}) return nil } // CreateMany creates {{.Table.Name}} objects in chunks func (r *{{.Table.Name}}DAL) CreateMany(shard int64, modelSlice []*models.{{.Table.Name}}) (e error) { // No records if len(modelSlice) == 0 { return } // Don't use a transaction if only a single value if len(modelSlice) == 1 { e = r.Create(shard, modelSlice[0]) return } chunkSize := 25 chunks := [][]*models.{{.Table.Name}}{} for i := 0; i < len(modelSlice); i += chunkSize { end := i + chunkSize if end > len(modelSlice) { end = len(modelSlice) } chunks = append(chunks, modelSlice[i:end]) } for chunkID, chunk := range chunks { var tx *sql.Tx ctx := context.Background() tx, e = r.db[shard].BeginTx(ctx, nil) if e != nil { return } for insertID, model := range chunk { {{if .IsDateCreated}} model.DateCreated = time.Now().UnixNano() / 1000000{{end}} {{if .IsLastUpdated}} model.LastUpdated = time.Now().UnixNano() / 1000000{{end}} _, e = tx.ExecContext(ctx, "{{.InsertSQL}}", {{.InsertArgs}}) if e != nil { r.log.Errorf("{{.Table.Name}}.CreateMany([](%d)) (Chunk %d.%d) > %s", len(modelSlice), chunkID, insertID, e.Error()) break } else { r.log.Debugf("{{.Table.Name}}.CreateMany([](%d)) (Chunk %d.%d)", len(modelSlice), chunkID, insertID) } } if e != nil { return } e = tx.Commit() } return } // Update updates an existing {{.Table.Name}} entry in the database func (r *{{.Table.Name}}DAL) Update(shard int64, model *models.{{.Table.Name}}) (e error) { {{if .IsLastUpdated}} model.LastUpdated = time.Now().UnixNano() / 1000000{{end}} _, e = r.db[shard].Exec("{{.UpdateSQL}}", {{.UpdateArgs}}) if e != nil { r.log.Errorf("{{.Table.Name}}DAL.Update(%d) > %s", model.{{.PrimaryKey}}, e.Error()) } else { r.log.Debugf("{{.Table.Name}}DAL.Update(%d)", model.{{.PrimaryKey}}) } return } // UpdateMany updates a slice of {{.Table.Name}} objects in chunks func (r {{.Table.Name}}DAL) UpdateMany(shard int64, modelSlice []*models.{{.Table.Name}}) (e error) { // No records if len(modelSlice) == 0 { return } // Don't use a transaction if only a single value if len(modelSlice) == 1 { e = r.Update(shard, modelSlice[0]) return } chunkSize := 25 chunks := [][]*models.{{.Table.Name}}{} for i := 0; i < len(modelSlice); i += chunkSize { end := i + chunkSize if end > len(modelSlice) { end = len(modelSlice) } chunks = append(chunks, modelSlice[i:end]) } for chunkID, chunk := range chunks { var tx *sql.Tx ctx := context.Background() tx, e = r.db[shard].BeginTx(ctx, nil) if e != nil { return } for updateID, model := range chunk { {{if .IsLastUpdated}} model.LastUpdated = time.Now().UnixNano() / 1000000{{end}} _, e = tx.ExecContext(ctx, "{{.UpdateSQL}}", {{.UpdateArgs}}) if e != nil { r.log.Errorf("{{.Table.Name}}.UpdateMany([](%d)) (Chunk %d.%d) > %s", len(modelSlice), chunkID, updateID, e.Error()) break } else { r.log.Debugf("{{.Table.Name}}.UpdateMany([](%d)) (Chunk %d.%d)", len(modelSlice), chunkID, updateID) } } if e != nil { return } e = tx.Commit() } return }{{if .IsDeleted}} // Delete marks an existing {{.Table.Name}} entry in the database as deleted func (r *{{.Table.Name}}DAL) Delete(shard int64, {{.PrimaryKey | toArgName}} {{.IDType}}) (e error) { _, e = r.db[shard].Exec("UPDATE ` + "`{{.Table.Name}}` SET `IsDeleted` = 1 WHERE `{{.PrimaryKey}}` = ?" + `", {{.PrimaryKey | toArgName}}) if e != nil { r.log.Errorf("{{.Table.Name}}DAL.Delete(%d) > %s", {{.PrimaryKey | toArgName}}, e.Error()) } else { r.log.Debugf("{{.Table.Name}}DAL.Delete(%d)", {{.PrimaryKey | toArgName}}) } return } // DeleteMany marks {{.Table.Name}} objects in chunks as deleted func (r {{.Table.Name}}DAL) DeleteMany(shard int64, modelSlice []*models.{{.Table.Name}}) (e error) { // No records if len(modelSlice) == 0 { return } // Don't use a transaction if only a single value if len(modelSlice) == 1 { e = r.Delete(shard, modelSlice[0].{{.PrimaryKey}}) return } chunkSize := 25 chunks := [][]*models.{{.Table.Name}}{} for i := 0; i < len(modelSlice); i += chunkSize { end := i + chunkSize if end > len(modelSlice) { end = len(modelSlice) } chunks = append(chunks, modelSlice[i:end]) } for chunkID, chunk := range chunks { var tx *sql.Tx ctx := context.Background() tx, e = r.db[shard].BeginTx(ctx, nil) if e != nil { return } for deleteID, model := range chunk { {{if .IsLastUpdated}} model.LastUpdated = time.Now().UnixNano() / 1000000{{end}} _, e = tx.ExecContext(ctx, "UPDATE ` + "`{{.Table.Name}}` SET `IsDeleted`= 1 WHERE `{{.PrimaryKey}}` = ?" + `", model.{{.PrimaryKey}}) if e != nil { r.log.Errorf("{{.Table.Name}}.DeleteMany([](%d)) (Chunk %d.%d) > %s", len(modelSlice), chunkID, deleteID, e.Error()) break } else { r.log.Debugf("{{.Table.Name}}.DeleteMany([](%d)) (Chunk %d.%d)", len(modelSlice), chunkID, deleteID) } } if e != nil { return } e = tx.Commit() } return }{{end}} // DeleteHard performs a SQL DELETE operation on a {{.Table.Name}} entry in the database func (r *{{.Table.Name}}DAL) DeleteHard(shard int64, {{.PrimaryKey | toArgName}} {{.IDType}}) (e error) { _, e = r.db[shard].Exec("DELETE FROM ` + "`{{.Table.Name}}`" + ` WHERE {{.PrimaryKey}} = ?", {{.PrimaryKey | toArgName}}) if e != nil { r.log.Errorf("{{.Table.Name}}DAL.HardDelete(%d) > %s", {{.PrimaryKey | toArgName}}, e.Error()) } else { r.log.Debugf("{{.Table.Name}}DAL.HardDelete(%d)", {{.PrimaryKey | toArgName}}) } return } // DeleteManyHard deletes {{.Table.Name}} objects in chunks func (r {{.Table.Name}}DAL) DeleteManyHard(shard int64, modelSlice []*models.{{.Table.Name}}) (e error) { // No records if len(modelSlice) == 0 { return } // Don't use a transaction if only a single value if len(modelSlice) == 1 { e = r.DeleteHard(shard, modelSlice[0].{{.PrimaryKey}}) return } chunkSize := 25 chunks := [][]*models.{{.Table.Name}}{} for i := 0; i < len(modelSlice); i += chunkSize { end := i + chunkSize if end > len(modelSlice) { end = len(modelSlice) } chunks = append(chunks, modelSlice[i:end]) } for chunkID, chunk := range chunks { var tx *sql.Tx ctx := context.Background() tx, e = r.db[shard].BeginTx(ctx, nil) if e != nil { return } for deleteID, model := range chunk { _, e = tx.ExecContext(ctx, "DELETE FROM ` + "`{{.Table.Name}}` WHERE `{{.PrimaryKey}}` = ?" + `", model.{{.PrimaryKey}}) if e != nil { r.log.Errorf("{{.Table.Name}}.DeleteManyHard([](%d)) (Chunk %d.%d) > %s", len(modelSlice), chunkID, deleteID, e.Error()) break } else { r.log.Debugf("{{.Table.Name}}.DeleteManyHard([](%d)) (Chunk %d.%d)", len(modelSlice), chunkID, deleteID) } } if e != nil { return } e = tx.Commit() } return } // FromID gets a single {{.Table.Name}} object by its Primary Key func (r *{{.Table.Name}}DAL) FromID(shard int64, {{.PrimaryKey | toArgName}} {{.IDType}}, mustExist bool) (*models.{{.Table.Name}}, error) { model, e := (&models.{{.Table.Name}}{}).Get(r.db[shard]).Where(query.EQ(models.{{.Table.Name}}_Column_{{.PrimaryKey}}, {{.PrimaryKey | toArgName}})).Run() if model == nil { if mustExist { return nil, errors.NewRecordNotFoundError() } return nil, nil } switch e { case sql.ErrNoRows: r.log.Debugf("{{.Table.Name}}DAL.FromID(%d) > NOT FOUND", {{.PrimaryKey | toArgName}}) if mustExist { e = errors.NewRecordNotFoundError() return nil, e } return nil, nil case nil: {{ if .IsDeleted}}if model.IsDeleted == 1 && mustExist { return nil, errors.NewRecordNotFoundError() }{{end}} r.log.Debugf("{{.Table.Name}}DAL.FromID(%d)", model.{{.PrimaryKey}}) return model, nil default: r.log.Errorf("{{.Table.Name}}DAL.FromID(%d) > %s", {{.PrimaryKey | toArgName}}, e.Error()) return nil, e } } // FromIDs returns a slice of {{.Table.Name}} objects by a set of primary keys func (r *{{.Table.Name}}DAL) FromIDs(shard int64, {{.PrimaryKey | toArgName}}s []{{.IDType}}) ([]*models.{{.Table.Name}}, error) { // No records if len({{.PrimaryKey | toArgName}}s) == 0 { return []*models.{{.Table.Name}}{}, nil } model, e := (&models.{{.Table.Name}}{}).Select(r.db[shard]).Where( query.INInt64(models.{{.Table.Name}}_Column_{{.PrimaryKey}}, {{.PrimaryKey | toArgName}}s), ).Run() if e != nil { r.log.Errorf("{{.Table.Name}}DAL.FromIDs(%v) > %s", {{.PrimaryKey | toArgName}}s, e.Error()) return []*models.{{.Table.Name}}{}, e } r.log.Debugf("{{.Table.Name}}DAL.FromIDs(%v)", {{.PrimaryKey | toArgName}}s) return model, nil } {{range $col := .UpdateColumns}} // Set{{$col.Name}} sets the {{$col.Name}} column on a {{$.Table.Name}} object func (r *{{$.Table.Name}}DAL) Set{{$col.Name}}(shard int64, {{$.PrimaryKey | toArgName}} {{$.IDType}}, {{$col.Name | toArgName}} {{$col | dataTypeToGoTypeString}}) (e error) { _, e = r.db[shard].Exec("UPDATE ` + "`{{$.Table.Name}}` SET `{{$col.Name}}` = ? WHERE `{{$.PrimaryKey}}` = ?" + `", {{$col.Name | toArgName}}, {{$.PrimaryKey | toArgName}}) if e != nil { r.log.Errorf("{{$.Table.Name}}DAL.Set{{$col.Name}}(%d, %v) > %s", {{$.PrimaryKey | toArgName}}, {{$col.Name | toArgName}}, e.Error()) } else { r.log.Debugf("{{$.Table.Name}}DAL.Set{{$col.Name}}(%d, %v)", {{$.PrimaryKey | toArgName}}, {{$col.Name | toArgName}}) } return } // ManyFrom{{$col.Name}} returns a slice of {{$.Table.Name}} models from {{$col.Name}} func (r *{{$.Table.Name}}DAL) ManyFrom{{$col.Name}}(shard int64, {{$col.Name | toArgName}} {{$col | dataTypeToGoTypeString}}, limit, offset int64, orderBy, orderDir string) ([]*models.{{$.Table.Name}}, error) { q := (&models.{{$.Table.Name}}{}).Select(r.db[shard]).Where( query.EQ(models.{{$.Table.Name}}_Column_{{$col.Name}}, {{$col.Name | toArgName}}), ) {{if $.IsDeleted}} q.Where(query.And(), query.EQ(models.{{$.Table.Name}}_Column_IsDeleted, 0)){{end}} if len(orderBy) > 0 { q.OrderBy(query.Column(orderBy), query.OrderDirFromString(orderDir)) } if limit > 0 { q.Limit(limit, offset) } collection, e := q.Run() if e != nil { r.log.Errorf("{{$.Table.Name}}DAL.ManyFrom{{$col.Name}}({{if or (eq $col.GoType "int") (eq $col.GoType "int64")}}%d{{else}}%s{{end}}, %d, %d, %s, %s) > %s", {{$col.Name | toArgName}}, limit, offset, orderBy, orderDir, e.Error()) return nil, e } r.log.Debugf("{{$.Table.Name}}DAL.ManyFrom{{$col.Name}}({{if or (eq $col.GoType "int") (eq $col.GoType "int64")}}%d{{else}}%s{{end}}, %d, %d, %s, %s)", {{$col.Name | toArgName}}, limit, offset, orderBy, orderDir) return collection, nil } {{if or (eq $col.GoType "int64") (eq $col.GoType "int")}} // ManyFrom{{$col.Name}}s returns a slice of {{$.Table.Name}} models from {{$col.Name}}s func (r *{{$.Table.Name}}DAL) ManyFrom{{$col.Name}}s(shard int64, {{$col.Name | toArgName}}s []{{$col | dataTypeToGoTypeString}}, limit, offset int64, orderBy, orderDir string) ([]*models.{{$.Table.Name}}, error) { // No records if len({{$col.Name | toArgName}}s) == 0 { return nil, nil } q := (&models.{{$.Table.Name}}{}).Select(r.db[shard]).Where( query.INInt{{if eq $col.GoType "int64"}}64{{end}}(models.{{$.Table.Name}}_Column_{{$col.Name}}, {{$col.Name | toArgName}}s), {{if $.IsDeleted}} query.And(), query.EQ(models.{{$.Table.Name}}_Column_IsDeleted, 0),{{end}} ) if len(orderBy) > 0 { q.OrderBy(query.Column(orderBy), query.OrderDirFromString(orderDir)) } if limit > 0 { q.Limit(limit, offset) } collection, e := q.Run() if e != nil { r.log.Errorf("{{$.Table.Name}}DAL.ManyFrom{{$col.Name}}s(%v, %d, %d, %s, %s) > %s", {{$col.Name | toArgName}}s, limit, offset, orderBy, orderDir, e.Error()) } else { r.log.Debugf("{{$.Table.Name}}DAL.ManyFrom{{$col.Name}}s(%d, %d, %s, %s)", limit, offset, orderBy, orderDir) } return collection, e } {{end}} // CountFrom{{$col.Name}} returns the number of {{$.Table.Name}} records from {{$col.Name}} func (r *{{$.Table.Name}}DAL) CountFrom{{$col.Name}}(shard int64, {{$col.Name | toArgName}} {{$col | dataTypeToGoTypeString}}) (int64, error) { count, e := (&models.{{$.Table.Name}}{}).Count(r.db[shard]).Where( query.EQ(models.{{$.Table.Name}}_Column_{{$col.Name}}, {{$col.Name | toArgName}}), {{if $.IsDeleted}} query.And(), query.EQ(models.{{$.Table.Name}}_Column_IsDeleted, 0), {{end}} ).Run() if e != nil { r.log.Errorf("{{$.Table.Name}}DAL.CountFrom{{$col.Name}}({{$col | dataTypeToFormatString}}) > %s", {{$col.Name | toArgName}}, e.Error()) } else { r.log.Debugf("{{$.Table.Name}}DAL.CountFrom{{$col.Name}}({{$col | dataTypeToFormatString}})", {{$col.Name | toArgName}}) } return count, e } // SingleFrom{{$col.Name}} returns a single {{$.Table.Name}} record by its {{$col.Name}} func (r *{{$.Table.Name}}DAL) SingleFrom{{$col.Name}}(shard int64, {{$col.Name | toArgName}} {{$col | dataTypeToGoTypeString}}, mustExist bool) (*models.{{$.Table.Name}}, error) { model, e := (&models.{{$.Table.Name}}{}).Get(r.db[shard]).Where(query.EQ(models.{{$.Table.Name}}_Column_{{$col.Name}}, {{$col.Name | toArgName}})).Run() if model == nil { if mustExist { return nil, errors.NewRecordNotFoundError() } return nil, nil } switch e { case sql.ErrNoRows: r.log.Debugf("{{$.Table.Name}}DAL.SingleFrom{{$col.Name}}(%d) > NOT FOUND", {{$col.Name | toArgName}}) if mustExist { e = errors.NewRecordNotFoundError() return nil, e } return nil, nil case nil: {{if $.IsDeleted}}if model.IsDeleted == 1 && mustExist { return nil, errors.NewRecordNotFoundError() }{{end}} r.log.Debugf("{{$.Table.Name}}DAL.SingleFrom{{$col.Name}}({{if $col.IsString}}%s{{end}}{{if not $col.IsString}}%d{{end}})", model.{{$col.Name}}) return model, nil default: r.log.Errorf("{{$.Table.Name}}DAL.SingleFrom{{$col.Name}}({{if $col.IsString}}%s{{end}}{{if not $col.IsString}}%d{{end}}) > %s", {{$col.Name | toArgName}}, e.Error()) return nil, e } } {{end}} // ManyPaged returns a slice of {{.Table.Name}} models func (r *{{.Table.Name}}DAL) ManyPaged(shard int64, limit, offset int64, orderBy, orderDir string) ([]*models.{{.Table.Name}}, error) { q := (&models.{{.Table.Name}}{}).Select(r.db[shard]){{if $.IsDeleted}} q.Where( query.EQ(models.{{.Table.Name}}_Column_IsDeleted, 0), ) {{end}} if len(orderBy) > 0 { q.OrderBy(query.Column(orderBy), query.OrderDirFromString(orderDir)) } if limit > 0 { q.Limit(limit, offset) } collection, e := q.Run() if e != nil { r.log.Errorf("{{.Table.Name}}DAL.ManyPaged(%d, %d, %s, %s) > %s", limit, offset, orderBy, orderDir, e.Error()) } else { r.log.Debugf("{{.Table.Name}}DAL.ManyPaged(%d, %d, %s, %s)", limit, offset, orderBy, orderDir) } return collection, e }`))
Functions ¶
func BuildPermissionsGoFile ¶ added in v1.8.20
func BuildPermissionsGoFile(permissions []PermissionTplType, permissionsFilePath string) error
func BuildTypescriptPermissions ¶ added in v1.8.11
func BuildTypescriptPermissions(permissions []PermissionTplType, permissionsFilePath string) error
BuildTypescriptPermissions returns a formatted typescript file of permission constants
func CleanFiles ¶ added in v1.8.91
func CleanFiles(name string, dir string, schemaList *schema.SchemaList, prefix, suffix string) error
CleanFiles removes model files that are not found in the database.Tables map
func CleanTypescriptDTOs ¶ added in v1.8.91
func CleanTypescriptDTOs(config *lib.Config, routes *lib.RoutesJSONContainer) error
func ColumnMapToNames ¶ added in v1.8.89
func FetchAllPermissionsFromControllers ¶ added in v1.8.82
func FetchAllPermissionsFromControllers(controllers []*lib.Controller) (map[string]string, error)
func GenAPIDocs ¶ added in v1.8.89
func GenAPIDocs(config *lib.Config, routes *lib.RoutesJSONContainer)
func GenAppBootstrapFile ¶ added in v1.8.90
GenAppBootstrapFile generates the services bootstrap file
func GenControllerBootstrap ¶ added in v1.8.89
GenControllerBootstrap generates the bootstrap file for the applications controllers
func GenGoPerms ¶ added in v1.8.20
func GenGoPerms(config *lib.Config, permissions []PermissionTplType) (e error)
0.018100 0.000900
func GenInterface ¶
func GenInterface(comment, pkgName, ifaceName, ifaceComment string, methods []string, imports []string) ([]byte, error)
GenInterface takes makes the interface into a byte array
func GenInterface2 ¶ added in v1.8.91
func GenInterfaces ¶
func GenRoutesAndPermissions ¶ added in v1.8.19
func GenRoutesAndPermissions(schemaList *schema.SchemaList, controllers []*lib.Controller, dirs []string, config *lib.Config) (*lib.RoutesJSONContainer, error)
GenRoutesAndPermissions generates a list of routes from a directory of controller files 0.0824 0.008664
func GenTSPerms ¶ added in v1.8.20
func GenTSPerms(config *lib.Config, permissions []PermissionTplType) (e error)
0.014938 seconds 0.005944 0.000568
func GenTSRoutes ¶ added in v1.8.89
func GenTSRoutes(controllers []*lib.Controller, config *lib.Config) error
func GenerateDALsBootstrapFile ¶
func GenerateDALsBootstrapFile(config *lib.Config, schemaList *schema.SchemaList) error
GenerateDALsBootstrapFile generates a dal bootstrap file in golang
func GenerateGoDAL ¶
GenerateGoDAL returns a string for a repo in golang
func GenerateTypescriptDTO ¶ added in v1.8.89
GenerateTypescriptType returns a string for a type in typescript TODO need a map of all types so that import paths can be used for struct and array types TODO test for struct types (apart from array types)
func GenerateTypescriptModel ¶ added in v1.8.89
GenerateTypescriptType returns a string for a type in typescript
func GenerateTypescriptModels ¶ added in v1.8.89
func GenerateTypescriptModels(config *lib.Config, routes *lib.RoutesJSONContainer) error
GenerateTypescriptModels returns a string for a typscript types file
func GenerateTypesriptDTOs ¶ added in v1.8.89
func GenerateTypesriptDTOs(config *lib.Config, routes *lib.RoutesJSONContainer) error
func GetChangedTables ¶ added in v1.8.91
func GetChangedTables(schemaList *schema.SchemaList, tablesCache *cache.TablesCache, force bool) ([]*schema.Table, error)
GetChangedTables returns a slice of tables that have changed
func ImportString ¶ added in v1.8.89
func ImportStrings2 ¶ added in v1.8.91
func InheritStrings ¶ added in v1.8.89
func LoadPermissionsFromJSON ¶ added in v1.8.34
LoadPermissionsFromJSON loads a set of permissions from a JSON file
func LoadRoutes ¶ added in v1.8.89
func LoadRoutes(config *lib.Config) (*lib.RoutesJSONContainer, error)
func ParseFileToGoStruct ¶ added in v1.8.89
InspectFile inspects a file
func TSFileHeader ¶ added in v1.8.89
Types ¶
type Gen ¶
Gen conntains all of the generator functionality
func (*Gen) GenerateDALSQL ¶
GenerateDALSQL generates a constants file filled with sql statements
type GoControllerBootstrapTemplateValues ¶ added in v1.8.91
type GoModelTemplateFieldVal ¶ added in v1.8.91
schema.GoTypeFormatString
type GoModelTemplateVals ¶ added in v1.8.91
type GoModelTemplateVals struct { Name string Schema string HasNull bool HasAccountID bool HasUserID bool UpdateColumns []GoModelTemplateFieldVal InsertColumns []GoModelTemplateFieldVal PrimaryKey string Fields []GoModelTemplateFieldVal }
type PermissionTplType ¶ added in v1.8.91
func BuildTplPermissions ¶ added in v1.8.91
func BuildTplPermissions(permissionMap map[string]string) []PermissionTplType
type RoutesTplValues ¶ added in v1.8.91
type RoutesTplValues struct { Imports []string AppDTOsPath string Controllers []*lib.Controller }
type TSRouteGenerator ¶ added in v1.8.89
type TSRouteGenerator struct {
// contains filtered or unexported fields
}
func NewTSRouteGenerator ¶ added in v1.8.89
func NewTSRouteGenerator(c *lib.Controller) *TSRouteGenerator
func (*TSRouteGenerator) AddImport ¶ added in v1.8.89
func (t *TSRouteGenerator) AddImport(importType string)
type TypescriptGenerator ¶ added in v1.8.89
type TypescriptGenerator struct {
// contains filtered or unexported fields
}
func NewTypescriptGenerator ¶ added in v1.8.89
func NewTypescriptGenerator(config *lib.Config, routes *lib.RoutesJSONContainer) *TypescriptGenerator
func (*TypescriptGenerator) CleanTypescriptAggregates ¶ added in v1.8.91
func (tg *TypescriptGenerator) CleanTypescriptAggregates() error
func (*TypescriptGenerator) ExtractColumns ¶ added in v1.8.89
func (tg *TypescriptGenerator) ExtractColumns(goType string) map[string]string
func (*TypescriptGenerator) GenerateTypescriptAggregate ¶ added in v1.8.89
func (tg *TypescriptGenerator) GenerateTypescriptAggregate(name string) ([]byte, error)
GenerateTypescriptAggregate returns a string for a type in typescript
func (*TypescriptGenerator) GenerateTypescriptAggregates ¶ added in v1.8.91
func (tg *TypescriptGenerator) GenerateTypescriptAggregates() error
0.008535
func (*TypescriptGenerator) GenerateTypescriptDefaults ¶ added in v1.8.89
func (tg *TypescriptGenerator) GenerateTypescriptDefaults(sb io.Writer, objectName string)
func (*TypescriptGenerator) GenerateTypescriptFields ¶ added in v1.8.89
func (tg *TypescriptGenerator) GenerateTypescriptFields(sb io.Writer, objectName string)