Types rename.

This commit is contained in:
go-jet 2019-07-08 10:48:03 +02:00
parent db43f471ec
commit 18bbf1b5fb
32 changed files with 98 additions and 97 deletions

1
.gitignore vendored
View file

@ -13,6 +13,7 @@
# Idea # Idea
.idea .idea
*.iml
# Test files # Test files
gen gen

View file

@ -34,10 +34,10 @@ Use the bellow command to install jet
$ go get -u github.com/go-jet/jet $ go get -u github.com/go-jet/jet
``` ```
Install jetgen to GOPATH bin folder. This will allow generating jet files from the command line. Install jet to GOPATH bin folder. This will allow generating jet files from the command line.
```sh ```sh
go install github.com/go-jet/jet/cmd/jetgen go install github.com/go-jet/jet/cmd/jet
``` ```
Make sure GOPATH bin folder is added to the PATH environment variable. Make sure GOPATH bin folder is added to the PATH environment variable.
@ -47,10 +47,10 @@ For this quick start example we will use sample _dvd rental_ database. Full data
Schema diagram of interest for example can be found [here](./examples/quick-start/diagram.png). Schema diagram of interest for example can be found [here](./examples/quick-start/diagram.png).
#### Generate sql builder and model files #### Generate sql builder and model files
To generate Go sql builder and Go data model from postgres database we need to call jetgen, and provide it with postgres connection parameters and destination folder for generated go files.\ To generate Go sql builder and Go data model from postgres database we need to call jet, and provide it with postgres connection parameters and destination folder for generated go files.\
Assuming we are running local postgres database, with user `jet`, database `jetdb` and schema `dvds` we will use this command: Assuming we are running local postgres database, with user `jet`, database `jetdb` and schema `dvds` we will use this command:
```sh ```sh
jetgen -host=localhost -port=5432 -user=jet -password=jet -dbname=jetdb -schema dvds -path ./gen jet -host=localhost -port=5432 -user=jet -password=jet -dbname=jetdb -schema dvds -path ./gen
``` ```
```sh ```sh
Connecting to postgres database: host=localhost port=5432 user=jet password=jet dbname=jetdb sslmode=disable Connecting to postgres database: host=localhost port=5432 user=jet password=jet dbname=jetdb sslmode=disable
@ -63,7 +63,7 @@ Generating enum sql builder files...
Generating enum model files... Generating enum model files...
Done Done
``` ```
As jetgen command output suggest, jetgen will: As jet command output suggest, jet will:
- connect to postgres database and retrieve information about the tables and enums of `dvds` schema - connect to postgres database and retrieve information about the tables and enums of `dvds` schema
- delete everything in destination folder `./gen`, - delete everything in destination folder `./gen`,
- and finally generate sql builder and model Go files for each schema tables and enums into destination folder `./gen`. - and finally generate sql builder and model Go files for each schema tables and enums into destination folder `./gen`.
@ -475,7 +475,7 @@ Without Jet these bugs will have to be either caught by some test or by manual t
## Dependencies ## Dependencies
At the moment Jet dependence only of: At the moment Jet dependence only of:
- `github.com/google/uuid` _(Used for debug purposes)_ - `github.com/google/uuid` _(Used for debug purposes)_
- `github.com/lib/pq` _(Used by JetGen to read information about database schema)_ - `github.com/lib/pq` _(Used by Jet to read information about database schema)_
To run the tests, additional dependencies are required: To run the tests, additional dependencies are required:
- `github.com/pkg/profile` - `github.com/pkg/profile`

View file

@ -20,7 +20,7 @@ func (a *alias) from(subQuery ExpressionTable) projection {
return &column return &column
} }
func (a *alias) serializeForProjection(statement statementType, out *queryData) error { func (a *alias) serializeForProjection(statement statementType, out *sqlBuilder) error {
err := a.expression.serialize(statement, out) err := a.expression.serialize(statement, out)
if err != nil { if err != nil {

View file

@ -42,7 +42,7 @@ func CAST(expression Expression) cast {
} }
} }
func (b *castImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (b *castImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
err := b.Expression.serialize(statement, out, options...) err := b.Expression.serialize(statement, out, options...)
out.writeString("::" + b.castType) out.writeString("::" + b.castType)
return err return err

View file

@ -16,7 +16,7 @@ const (
) )
type clause interface { type clause interface {
serialize(statement statementType, out *queryData, options ...serializeOption) error serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error
} }
func contains(options []serializeOption, option serializeOption) bool { func contains(options []serializeOption, option serializeOption) bool {
@ -29,7 +29,7 @@ func contains(options []serializeOption, option serializeOption) bool {
return false return false
} }
type queryData struct { type sqlBuilder struct {
buff bytes.Buffer buff bytes.Buffer
args []interface{} args []interface{}
@ -50,11 +50,11 @@ const (
const defaultIdent = 5 const defaultIdent = 5
func (q *queryData) increaseIdent() { func (q *sqlBuilder) increaseIdent() {
q.ident += defaultIdent q.ident += defaultIdent
} }
func (q *queryData) decreaseIdent() { func (q *sqlBuilder) decreaseIdent() {
if q.ident < defaultIdent { if q.ident < defaultIdent {
q.ident = 0 q.ident = 0
} }
@ -62,14 +62,14 @@ func (q *queryData) decreaseIdent() {
q.ident -= defaultIdent q.ident -= defaultIdent
} }
func (q *queryData) writeProjections(statement statementType, projections []projection) error { func (q *sqlBuilder) writeProjections(statement statementType, projections []projection) error {
q.increaseIdent() q.increaseIdent()
err := serializeProjectionList(statement, projections, q) err := serializeProjectionList(statement, projections, q)
q.decreaseIdent() q.decreaseIdent()
return err return err
} }
func (q *queryData) writeFrom(statement statementType, table ReadableTable) error { func (q *sqlBuilder) writeFrom(statement statementType, table ReadableTable) error {
q.newLine() q.newLine()
q.writeString("FROM") q.writeString("FROM")
@ -80,7 +80,7 @@ func (q *queryData) writeFrom(statement statementType, table ReadableTable) erro
return err return err
} }
func (q *queryData) writeWhere(statement statementType, where Expression) error { func (q *sqlBuilder) writeWhere(statement statementType, where Expression) error {
q.newLine() q.newLine()
q.writeString("WHERE") q.writeString("WHERE")
@ -91,7 +91,7 @@ func (q *queryData) writeWhere(statement statementType, where Expression) error
return err return err
} }
func (q *queryData) writeGroupBy(statement statementType, groupBy []groupByClause) error { func (q *sqlBuilder) writeGroupBy(statement statementType, groupBy []groupByClause) error {
q.newLine() q.newLine()
q.writeString("GROUP BY") q.writeString("GROUP BY")
@ -102,7 +102,7 @@ func (q *queryData) writeGroupBy(statement statementType, groupBy []groupByClaus
return err return err
} }
func (q *queryData) writeOrderBy(statement statementType, orderBy []OrderByClause) error { func (q *sqlBuilder) writeOrderBy(statement statementType, orderBy []OrderByClause) error {
q.newLine() q.newLine()
q.writeString("ORDER BY") q.writeString("ORDER BY")
@ -113,7 +113,7 @@ func (q *queryData) writeOrderBy(statement statementType, orderBy []OrderByClaus
return err return err
} }
func (q *queryData) writeHaving(statement statementType, having Expression) error { func (q *sqlBuilder) writeHaving(statement statementType, having Expression) error {
q.newLine() q.newLine()
q.writeString("HAVING") q.writeString("HAVING")
@ -124,7 +124,7 @@ func (q *queryData) writeHaving(statement statementType, having Expression) erro
return err return err
} }
func (q *queryData) writeReturning(statement statementType, returning []projection) error { func (q *sqlBuilder) writeReturning(statement statementType, returning []projection) error {
if len(returning) == 0 { if len(returning) == 0 {
return nil return nil
} }
@ -136,12 +136,12 @@ func (q *queryData) writeReturning(statement statementType, returning []projecti
return q.writeProjections(statement, returning) return q.writeProjections(statement, returning)
} }
func (q *queryData) newLine() { func (q *sqlBuilder) newLine() {
q.write([]byte{'\n'}) q.write([]byte{'\n'})
q.write(bytes.Repeat([]byte{' '}, q.ident)) q.write(bytes.Repeat([]byte{' '}, q.ident))
} }
func (q *queryData) write(data []byte) { func (q *sqlBuilder) write(data []byte) {
if len(data) == 0 { if len(data) == 0 {
return return
} }
@ -162,15 +162,15 @@ func isPostSeparator(b byte) bool {
return b == ' ' || b == '.' || b == ',' || b == ')' || b == '\n' || b == ':' return b == ' ' || b == '.' || b == ',' || b == ')' || b == '\n' || b == ':'
} }
func (q *queryData) writeQuotedString(str string) { func (q *sqlBuilder) writeQuotedString(str string) {
q.writeString(`"` + str + `"`) q.writeString(`"` + str + `"`)
} }
func (q *queryData) writeString(str string) { func (q *sqlBuilder) writeString(str string) {
q.write([]byte(str)) q.write([]byte(str))
} }
func (q *queryData) writeIdentifier(name string) { func (q *sqlBuilder) writeIdentifier(name string) {
quoteWrap := name != strings.ToLower(name) || strings.ContainsAny(name, ". -") quoteWrap := name != strings.ToLower(name) || strings.ContainsAny(name, ". -")
if quoteWrap { if quoteWrap {
@ -180,26 +180,26 @@ func (q *queryData) writeIdentifier(name string) {
} }
} }
func (q *queryData) writeByte(b byte) { func (q *sqlBuilder) writeByte(b byte) {
q.write([]byte{b}) q.write([]byte{b})
} }
func (q *queryData) finalize() (string, []interface{}) { func (q *sqlBuilder) finalize() (string, []interface{}) {
return q.buff.String() + ";\n", q.args return q.buff.String() + ";\n", q.args
} }
func (q *queryData) insertConstantArgument(arg interface{}) { func (q *sqlBuilder) insertConstantArgument(arg interface{}) {
q.writeString(ArgToString(arg)) q.writeString(ArgToString(arg))
} }
func (q *queryData) insertPreparedArgument(arg interface{}) { func (q *sqlBuilder) insertPreparedArgument(arg interface{}) {
q.args = append(q.args, arg) q.args = append(q.args, arg)
argPlaceholder := "$" + strconv.Itoa(len(q.args)) argPlaceholder := "$" + strconv.Itoa(len(q.args))
q.writeString(argPlaceholder) q.writeString(argPlaceholder)
} }
func (q *queryData) reset() { func (q *sqlBuilder) reset() {
q.buff.Reset() q.buff.Reset()
q.args = []interface{}{} q.args = []interface{}{}
} }

View file

@ -3,7 +3,7 @@ package main
import ( import (
"flag" "flag"
"fmt" "fmt"
"github.com/go-jet/jet/generator/postgresgen" "github.com/go-jet/jet/generator/postgres"
"os" "os"
) )
@ -39,12 +39,12 @@ func init() {
func main() { func main() {
if host == "" || port == "" || user == "" || dbName == "" || schemaName == "" { if host == "" || port == "" || user == "" || dbName == "" || schemaName == "" {
fmt.Println("jetgen: required flag missing") fmt.Println("jet: required flag missing")
flag.Usage() flag.Usage()
os.Exit(-2) os.Exit(-2)
} }
genData := postgresgen.DBConnection{ genData := postgres.DBConnection{
Host: host, Host: host,
Port: port, Port: port,
User: user, User: user,
@ -56,7 +56,7 @@ func main() {
SchemaName: schemaName, SchemaName: schemaName,
} }
err := postgresgen.Generate(destDir, genData) err := postgres.Generate(destDir, genData)
if err != nil { if err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())

View file

@ -61,7 +61,7 @@ func (c *columnImpl) defaultAlias() string {
return c.name return c.name
} }
func (c *columnImpl) serializeForOrderBy(statement statementType, out *queryData) error { func (c *columnImpl) serializeForOrderBy(statement statementType, out *sqlBuilder) error {
if statement == set_statement { if statement == set_statement {
// set Statement (UNION, EXCEPT ...) can reference only select projections in order by clause // set Statement (UNION, EXCEPT ...) can reference only select projections in order by clause
out.writeString(`"` + c.defaultAlias() + `"`) //always quote out.writeString(`"` + c.defaultAlias() + `"`) //always quote
@ -72,7 +72,7 @@ func (c *columnImpl) serializeForOrderBy(statement statementType, out *queryData
return c.serialize(statement, out) return c.serialize(statement, out)
} }
func (c columnImpl) serializeForProjection(statement statementType, out *queryData) error { func (c columnImpl) serializeForProjection(statement statementType, out *sqlBuilder) error {
err := c.serialize(statement, out) err := c.serialize(statement, out)
if err != nil { if err != nil {
@ -84,7 +84,7 @@ func (c columnImpl) serializeForProjection(statement statementType, out *queryDa
return nil return nil
} }
func (c columnImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (c columnImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if c.subQuery != nil { if c.subQuery != nil {
out.writeIdentifier(c.subQuery.Alias()) out.writeIdentifier(c.subQuery.Alias())
@ -119,7 +119,7 @@ func (cl ColumnList) from(subQuery ExpressionTable) projection {
return newProjectionList return newProjectionList
} }
func (cl ColumnList) serializeForProjection(statement statementType, out *queryData) error { func (cl ColumnList) serializeForProjection(statement statementType, out *sqlBuilder) error {
projections := columnListToProjectionList(cl) projections := columnListToProjectionList(cl)
err := serializeProjectionList(statement, projections, out) err := serializeProjectionList(statement, projections, out)

View file

@ -37,7 +37,7 @@ func (d *deleteStatementImpl) RETURNING(projections ...projection) DeleteStateme
return d return d
} }
func (d *deleteStatementImpl) serializeImpl(out *queryData) error { func (d *deleteStatementImpl) serializeImpl(out *sqlBuilder) error {
if d == nil { if d == nil {
return errors.New("delete statement is nil") return errors.New("delete statement is nil")
} }
@ -68,7 +68,7 @@ func (d *deleteStatementImpl) serializeImpl(out *queryData) error {
} }
func (d *deleteStatementImpl) Sql() (query string, args []interface{}, err error) { func (d *deleteStatementImpl) Sql() (query string, args []interface{}, err error) {
queryData := &queryData{} queryData := &sqlBuilder{}
err = d.serializeImpl(queryData) err = d.serializeImpl(queryData)

View file

@ -15,7 +15,7 @@ func NewEnumValue(name string) StringExpression {
return enumValue return enumValue
} }
func (e enumValue) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (e enumValue) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.insertConstantArgument(e.name) out.insertConstantArgument(e.name)
return nil return nil
} }

View file

@ -66,15 +66,15 @@ func (e *expressionInterfaceImpl) DESC() OrderByClause {
return newOrderByClause(e.parent, false) return newOrderByClause(e.parent, false)
} }
func (e *expressionInterfaceImpl) serializeForGroupBy(statement statementType, out *queryData) error { func (e *expressionInterfaceImpl) serializeForGroupBy(statement statementType, out *sqlBuilder) error {
return e.parent.serialize(statement, out, noWrap) return e.parent.serialize(statement, out, noWrap)
} }
func (e *expressionInterfaceImpl) serializeForProjection(statement statementType, out *queryData) error { func (e *expressionInterfaceImpl) serializeForProjection(statement statementType, out *sqlBuilder) error {
return e.parent.serialize(statement, out, noWrap) return e.parent.serialize(statement, out, noWrap)
} }
func (e *expressionInterfaceImpl) serializeForOrderBy(statement statementType, out *queryData) error { func (e *expressionInterfaceImpl) serializeForOrderBy(statement statementType, out *sqlBuilder) error {
return e.parent.serialize(statement, out, noWrap) return e.parent.serialize(statement, out, noWrap)
} }
@ -94,7 +94,7 @@ func newBinaryExpression(lhs, rhs Expression, operator string) binaryOpExpressio
return binaryExpression return binaryExpression
} }
func (c *binaryOpExpression) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (c *binaryOpExpression) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if c == nil { if c == nil {
return errors.New("binary Expression is nil") return errors.New("binary Expression is nil")
} }
@ -143,7 +143,7 @@ func newPrefixExpression(expression Expression, operator string) prefixOpExpress
return prefixExpression return prefixExpression
} }
func (p *prefixOpExpression) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (p *prefixOpExpression) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if p == nil { if p == nil {
return errors.New("Prefix Expression is nil.") return errors.New("Prefix Expression is nil.")
} }
@ -175,7 +175,7 @@ func newPostfixOpExpression(expression Expression, operator string) postfixOpExp
return postfixOpExpression return postfixOpExpression
} }
func (p *postfixOpExpression) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (p *postfixOpExpression) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if p == nil { if p == nil {
return errors.New("Postifx operator Expression is nil.") return errors.New("Postifx operator Expression is nil.")
} }

View file

@ -12,7 +12,7 @@ type intervalExpression struct {
const intervalSep = ":" const intervalSep = ":"
func (c *intervalExpression) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (c *intervalExpression) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString("INTERVAL '") out.writeString("INTERVAL '")
duration := c.duration duration := c.duration

View file

@ -44,7 +44,7 @@ func (e *expressionTableImpl) AllColumns() ProjectionList {
return e.projections return e.projections
} }
func (e *expressionTableImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (e *expressionTableImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if e == nil { if e == nil {
return errors.New("Expression table is nil. ") return errors.New("Expression table is nil. ")
} }

View file

@ -25,7 +25,7 @@ func newFunc(name string, expressions []Expression, parent Expression) *funcExpr
return funcExp return funcExp
} }
func (f *funcExpressionImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (f *funcExpressionImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if f == nil { if f == nil {
return errors.New("Function expressions is nil. ") return errors.New("Function expressions is nil. ")
} }

View file

@ -160,7 +160,7 @@ func TestFuncLEAST(t *testing.T) {
func TestInterval(t *testing.T) { func TestInterval(t *testing.T) {
query := INTERVAL(`6 years 5 months 4 days 3 hours 2 minutes 1 second`) query := INTERVAL(`6 years 5 months 4 days 3 hours 2 minutes 1 second`)
queryData := &queryData{} queryData := &sqlBuilder{}
err := query.serialize(select_statement, queryData) err := query.serialize(select_statement, queryData)

View file

@ -1,4 +1,4 @@
package postgresgen package postgres
import ( import (
"database/sql" "database/sql"

View file

@ -1,14 +1,14 @@
package postgresgen package postgres
var autoGenWarningTemplate = ` var autoGenWarningTemplate = `
// //
// Code generated by jetgen DO NOT EDIT. // Code generated by go-jet DO NOT EDIT.
// Generated at {{now}} // Generated at {{now}}
// //
// WARNING: Changes to this file may cause incorrect behavior and will be lost // WARNING: Changes to this file may cause incorrect behavior and will be lost
// if the code is regenerated // if the code is regenerated
// //
// Licence under github.com/go-jet/jet/LICENSE // Licence under: https://github.com/go-jet/jet/blob/master/LICENSE
// //
` `

View file

@ -1,7 +1,7 @@
package jet package jet
type groupByClause interface { type groupByClause interface {
serializeForGroupBy(statement statementType, out *queryData) error serializeForGroupBy(statement statementType, out *sqlBuilder) error
} }
// TODO: GROUPING SETS, CUBE, and ROLLUP // TODO: GROUPING SETS, CUBE, and ROLLUP

View file

@ -76,7 +76,7 @@ func (i *insertStatementImpl) DebugSql() (query string, err error) {
} }
func (i *insertStatementImpl) Sql() (sql string, args []interface{}, err error) { func (i *insertStatementImpl) Sql() (sql string, args []interface{}, err error) {
queryData := &queryData{} queryData := &sqlBuilder{}
queryData.newLine() queryData.newLine()
queryData.writeString("INSERT INTO") queryData.writeString("INSERT INTO")

View file

@ -11,7 +11,7 @@ var (
type keywordClause string type keywordClause string
func (k keywordClause) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (k keywordClause) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString(string(k)) out.writeString(string(k))
return nil return nil

View file

@ -23,7 +23,7 @@ func constLiteral(value interface{}) *literalExpression {
return exp return exp
} }
func (l literalExpression) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (l literalExpression) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if l.constant { if l.constant {
out.insertConstantArgument(l.value) out.insertConstantArgument(l.value)
} else { } else {
@ -189,7 +189,7 @@ func newNullLiteral() Expression {
return nullExpression return nullExpression
} }
func (n *nullLiteral) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (n *nullLiteral) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString("NULL") out.writeString("NULL")
return nil return nil
} }
@ -207,7 +207,7 @@ func newStarLiteral() Expression {
return starExpression return starExpression
} }
func (n *starLiteral) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (n *starLiteral) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString("*") out.writeString("*")
return nil return nil
} }
@ -219,7 +219,7 @@ type wrap struct {
expressions []Expression expressions []Expression
} }
func (n *wrap) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (n *wrap) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString("(") out.writeString("(")
err := serializeExpressionList(statement, n.expressions, ", ", out) err := serializeExpressionList(statement, n.expressions, ", ", out)
out.writeString(")") out.writeString(")")
@ -240,7 +240,7 @@ type rawExpression struct {
raw string raw string
} }
func (n *rawExpression) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (n *rawExpression) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString(n.raw) out.writeString(n.raw)
return nil return nil
} }

View file

@ -62,7 +62,7 @@ func (l *lockStatementImpl) Sql() (query string, args []interface{}, err error)
return "", nil, errors.New("There is no table selected to be locked. ") return "", nil, errors.New("There is no table selected to be locked. ")
} }
out := &queryData{} out := &sqlBuilder{}
out.newLine() out.newLine()
out.writeString("LOCK TABLE") out.writeString("LOCK TABLE")

View file

@ -100,7 +100,7 @@ func (c *caseOperatorImpl) ELSE(els Expression) CaseOperatorExpression {
return c return c
} }
func (c *caseOperatorImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (c *caseOperatorImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if c == nil { if c == nil {
return errors.New("Case Expression is nil. ") return errors.New("Case Expression is nil. ")
} }

View file

@ -3,7 +3,7 @@ package jet
import "errors" import "errors"
type OrderByClause interface { type OrderByClause interface {
serializeForOrderBy(statement statementType, out *queryData) error serializeForOrderBy(statement statementType, out *sqlBuilder) error
} }
type orderByClauseImpl struct { type orderByClauseImpl struct {
@ -11,7 +11,7 @@ type orderByClauseImpl struct {
ascent bool ascent bool
} }
func (o *orderByClauseImpl) serializeForOrderBy(statement statementType, out *queryData) error { func (o *orderByClauseImpl) serializeForOrderBy(statement statementType, out *sqlBuilder) error {
if o.expression == nil { if o.expression == nil {
return errors.New("nil orderBy by clause.") return errors.New("nil orderBy by clause.")
} }

View file

@ -1,7 +1,7 @@
package jet package jet
type projection interface { type projection interface {
serializeForProjection(statement statementType, out *queryData) error serializeForProjection(statement statementType, out *sqlBuilder) error
from(subQuery ExpressionTable) projection from(subQuery ExpressionTable) projection
} }
@ -18,7 +18,7 @@ func (cl ProjectionList) from(subQuery ExpressionTable) projection {
return newProjectionList return newProjectionList
} }
func (cl ProjectionList) serializeForProjection(statement statementType, out *queryData) error { func (cl ProjectionList) serializeForProjection(statement statementType, out *sqlBuilder) error {
err := serializeProjectionList(statement, cl, out) err := serializeProjectionList(statement, cl, out)
if err != nil { if err != nil {

View file

@ -153,7 +153,7 @@ func (s *selectStatementImpl) projections() []projection {
return s.projectionList return s.projectionList
} }
func (s *selectStatementImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (s *selectStatementImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if s == nil { if s == nil {
return errors.New("Select expression is nil. ") return errors.New("Select expression is nil. ")
} }
@ -173,7 +173,7 @@ func (s *selectStatementImpl) serialize(statement statementType, out *queryData,
return nil return nil
} }
func (s *selectStatementImpl) serializeImpl(out *queryData) error { func (s *selectStatementImpl) serializeImpl(out *sqlBuilder) error {
if s == nil { if s == nil {
return errors.New("Select expression is nil. ") return errors.New("Select expression is nil. ")
} }
@ -259,7 +259,7 @@ func (s *selectStatementImpl) serializeImpl(out *queryData) error {
} }
func (s *selectStatementImpl) Sql() (query string, args []interface{}, err error) { func (s *selectStatementImpl) Sql() (query string, args []interface{}, err error) {
queryData := queryData{} queryData := sqlBuilder{}
err = s.serializeImpl(&queryData) err = s.serializeImpl(&queryData)
@ -326,7 +326,7 @@ func (s *selectLockImpl) SKIP_LOCKED() SelectLock {
return s return s
} }
func (s *selectLockImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (s *selectLockImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
out.writeString(s.lockStrength) out.writeString(s.lockStrength)
if s.noWait { if s.noWait {

View file

@ -69,7 +69,7 @@ func (s *setStatementImpl) projections() []projection {
return []projection{} return []projection{}
} }
func (s *setStatementImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (s *setStatementImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if s == nil { if s == nil {
return errors.New("Set expression is nil. ") return errors.New("Set expression is nil. ")
} }
@ -96,7 +96,7 @@ func (s *setStatementImpl) serialize(statement statementType, out *queryData, op
return nil return nil
} }
func (s *setStatementImpl) serializeImpl(out *queryData) error { func (s *setStatementImpl) serializeImpl(out *sqlBuilder) error {
if s == nil { if s == nil {
return errors.New("Set expression is nil. ") return errors.New("Set expression is nil. ")
} }
@ -158,7 +158,7 @@ func (s *setStatementImpl) serializeImpl(out *queryData) error {
} }
func (s *setStatementImpl) Sql() (query string, args []interface{}, err error) { func (s *setStatementImpl) Sql() (query string, args []interface{}, err error) {
queryData := &queryData{} queryData := &sqlBuilder{}
err = s.serializeImpl(queryData) err = s.serializeImpl(queryData)

View file

@ -168,7 +168,7 @@ func (t *tableImpl) columns() []column {
return ret return ret
} }
func (t *tableImpl) serialize(statement statementType, out *queryData, options ...serializeOption) error { func (t *tableImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
if t == nil { if t == nil {
return errors.New("tableImpl is nil. ") return errors.New("tableImpl is nil. ")
} }
@ -235,7 +235,7 @@ func (t *joinTable) columns() []column {
return append(t.lhs.columns(), t.rhs.columns()...) return append(t.lhs.columns(), t.rhs.columns()...)
} }
func (t *joinTable) serialize(statement statementType, out *queryData, options ...serializeOption) (err error) { func (t *joinTable) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) (err error) {
if t == nil { if t == nil {
return errors.New("Join table is nil. ") return errors.New("Join table is nil. ")
} }

View file

@ -52,7 +52,7 @@ var table3 = NewTable(
table3StrCol) table3StrCol)
func assertClauseSerialize(t *testing.T, clause clause, query string, args ...interface{}) { func assertClauseSerialize(t *testing.T, clause clause, query string, args ...interface{}) {
out := queryData{} out := sqlBuilder{}
err := clause.serialize(select_statement, &out) err := clause.serialize(select_statement, &out)
assert.NilError(t, err) assert.NilError(t, err)
@ -62,7 +62,7 @@ func assertClauseSerialize(t *testing.T, clause clause, query string, args ...in
} }
func assertClauseSerializeErr(t *testing.T, clause clause, errString string) { func assertClauseSerializeErr(t *testing.T, clause clause, errString string) {
out := queryData{} out := sqlBuilder{}
err := clause.serialize(select_statement, &out) err := clause.serialize(select_statement, &out)
//fmt.Println(out.buff.String()) //fmt.Println(out.buff.String())
@ -71,7 +71,7 @@ func assertClauseSerializeErr(t *testing.T, clause clause, errString string) {
} }
func assertProjectionSerialize(t *testing.T, projection projection, query string, args ...interface{}) { func assertProjectionSerialize(t *testing.T, projection projection, query string, args ...interface{}) {
out := queryData{} out := sqlBuilder{}
err := projection.serializeForProjection(select_statement, &out) err := projection.serializeForProjection(select_statement, &out)
assert.NilError(t, err) assert.NilError(t, err)

View file

@ -3,7 +3,7 @@ package main
import ( import (
"database/sql" "database/sql"
"fmt" "fmt"
"github.com/go-jet/jet/generator/postgresgen" "github.com/go-jet/jet/generator/postgres"
"github.com/go-jet/jet/tests/dbconfig" "github.com/go-jet/jet/tests/dbconfig"
"io/ioutil" "io/ioutil"
) )
@ -33,7 +33,7 @@ func main() {
_, err = db.Exec(string(testSampleSql)) _, err = db.Exec(string(testSampleSql))
err = postgresgen.Generate("./.gentestdata", postgresgen.DBConnection{ err = postgres.Generate("./.gentestdata", postgres.DBConnection{
Host: dbconfig.Host, Host: dbconfig.Host,
Port: "5432", Port: "5432",
User: dbconfig.User, User: dbconfig.User,

View file

@ -56,7 +56,7 @@ func (u *updateStatementImpl) RETURNING(projections ...projection) UpdateStateme
} }
func (u *updateStatementImpl) Sql() (sql string, args []interface{}, err error) { func (u *updateStatementImpl) Sql() (sql string, args []interface{}, err error) {
out := &queryData{} out := &sqlBuilder{}
out.newLine() out.newLine()
out.writeString("UPDATE") out.writeString("UPDATE")

View file

@ -7,7 +7,7 @@ import (
"strings" "strings"
) )
func serializeOrderByClauseList(statement statementType, orderByClauses []OrderByClause, out *queryData) error { func serializeOrderByClauseList(statement statementType, orderByClauses []OrderByClause, out *sqlBuilder) error {
for i, value := range orderByClauses { for i, value := range orderByClauses {
if i > 0 { if i > 0 {
@ -24,7 +24,7 @@ func serializeOrderByClauseList(statement statementType, orderByClauses []OrderB
return nil return nil
} }
func serializeGroupByClauseList(statement statementType, clauses []groupByClause, out *queryData) (err error) { func serializeGroupByClauseList(statement statementType, clauses []groupByClause, out *sqlBuilder) (err error) {
for i, c := range clauses { for i, c := range clauses {
if i > 0 { if i > 0 {
@ -43,7 +43,7 @@ func serializeGroupByClauseList(statement statementType, clauses []groupByClause
return nil return nil
} }
func serializeClauseList(statement statementType, clauses []clause, out *queryData) (err error) { func serializeClauseList(statement statementType, clauses []clause, out *sqlBuilder) (err error) {
for i, c := range clauses { for i, c := range clauses {
if i > 0 { if i > 0 {
@ -62,7 +62,7 @@ func serializeClauseList(statement statementType, clauses []clause, out *queryDa
return nil return nil
} }
func serializeExpressionList(statement statementType, expressions []Expression, separator string, out *queryData) error { func serializeExpressionList(statement statementType, expressions []Expression, separator string, out *sqlBuilder) error {
for i, value := range expressions { for i, value := range expressions {
if i > 0 { if i > 0 {
@ -79,7 +79,7 @@ func serializeExpressionList(statement statementType, expressions []Expression,
return nil return nil
} }
func serializeProjectionList(statement statementType, projections []projection, out *queryData) error { func serializeProjectionList(statement statementType, projections []projection, out *sqlBuilder) error {
for i, col := range projections { for i, col := range projections {
if i > 0 { if i > 0 {
out.writeString(",") out.writeString(",")
@ -98,7 +98,7 @@ func serializeProjectionList(statement statementType, projections []projection,
return nil return nil
} }
func serializeColumnNames(columns []column, out *queryData) error { func serializeColumnNames(columns []column, out *sqlBuilder) error {
for i, col := range columns { for i, col := range columns {
if i > 0 { if i > 0 {
out.writeString(", ") out.writeString(", ")

View file

@ -6,18 +6,18 @@ This files can be generated in two ways:
#### 1) Generating from command line #### 1) Generating from command line
Install jetgen to GOPATH bin folder. This will allow generating jet files from the command line. Install jet to GOPATH bin folder. This will allow generating jet files from the command line.
```sh ```sh
go install github.com/go-jet/jet/cmd/jetgen go install github.com/go-jet/jet/cmd/jet
``` ```
Make sure GOPATH bin folder is added to the PATH environment variable. Make sure GOPATH bin folder is added to the PATH environment variable.
Test jetgen can be found in the PATH. Test jet can be found in the PATH.
```sh ```sh
jetgen -h jet -h
Usage of jetgen: Usage of jet:
-host string -host string
Database host path (Example: localhost) Database host path (Example: localhost)
-port string -port string
@ -40,7 +40,7 @@ Usage of jetgen:
Now to generate sample database: Now to generate sample database:
```sh ```sh
jetgen -host=localhost -port=5432 -user=jet -password=jet -dbname=jetdb -schema dvds -path ./gen jet -host=localhost -port=5432 -user=jet -password=jet -dbname=jetdb -schema dvds -path ./gen
``` ```
```sh ```sh
Connecting to postgres database: host=localhost port=5432 user=jet password=jet dbname=jetdb sslmode=disable Connecting to postgres database: host=localhost port=5432 user=jet password=jet dbname=jetdb sslmode=disable
@ -56,11 +56,11 @@ Done
#### 2) Generating from code #### 2) Generating from code
``` ```
import "github.com/go-jet/jet/generator/postgresgen" import "github.com/go-jet/jet/generator/postgres"
... ...
err = postgresgen.Generate("./gen", postgresgen.DBConnection{ err = postgres.Generate("./gen", postgres.DBConnection{
Host: "localhost", Host: "localhost",
Port: "5432", Port: "5432",
User: "jet", User: "jet",