Types rename.
This commit is contained in:
parent
db43f471ec
commit
18bbf1b5fb
32 changed files with 98 additions and 97 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
# Idea
|
||||
.idea
|
||||
*.iml
|
||||
|
||||
# Test files
|
||||
gen
|
||||
|
|
|
|||
12
README.md
12
README.md
|
|
@ -34,10 +34,10 @@ Use the bellow command to install 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
|
||||
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.
|
||||
|
|
@ -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).
|
||||
|
||||
#### 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:
|
||||
```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
|
||||
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...
|
||||
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
|
||||
- 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`.
|
||||
|
|
@ -475,7 +475,7 @@ Without Jet these bugs will have to be either caught by some test or by manual t
|
|||
## Dependencies
|
||||
At the moment Jet dependence only of:
|
||||
- `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:
|
||||
- `github.com/pkg/profile`
|
||||
|
|
|
|||
2
alias.go
2
alias.go
|
|
@ -20,7 +20,7 @@ func (a *alias) from(subQuery ExpressionTable) projection {
|
|||
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)
|
||||
|
||||
if err != nil {
|
||||
|
|
|
|||
2
cast.go
2
cast.go
|
|
@ -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...)
|
||||
out.writeString("::" + b.castType)
|
||||
return err
|
||||
|
|
|
|||
42
clause.go
42
clause.go
|
|
@ -16,7 +16,7 @@ const (
|
|||
)
|
||||
|
||||
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 {
|
||||
|
|
@ -29,7 +29,7 @@ func contains(options []serializeOption, option serializeOption) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
type queryData struct {
|
||||
type sqlBuilder struct {
|
||||
buff bytes.Buffer
|
||||
args []interface{}
|
||||
|
||||
|
|
@ -50,11 +50,11 @@ const (
|
|||
|
||||
const defaultIdent = 5
|
||||
|
||||
func (q *queryData) increaseIdent() {
|
||||
func (q *sqlBuilder) increaseIdent() {
|
||||
q.ident += defaultIdent
|
||||
}
|
||||
|
||||
func (q *queryData) decreaseIdent() {
|
||||
func (q *sqlBuilder) decreaseIdent() {
|
||||
if q.ident < defaultIdent {
|
||||
q.ident = 0
|
||||
}
|
||||
|
|
@ -62,14 +62,14 @@ func (q *queryData) decreaseIdent() {
|
|||
q.ident -= defaultIdent
|
||||
}
|
||||
|
||||
func (q *queryData) writeProjections(statement statementType, projections []projection) error {
|
||||
func (q *sqlBuilder) writeProjections(statement statementType, projections []projection) error {
|
||||
q.increaseIdent()
|
||||
err := serializeProjectionList(statement, projections, q)
|
||||
q.decreaseIdent()
|
||||
return err
|
||||
}
|
||||
|
||||
func (q *queryData) writeFrom(statement statementType, table ReadableTable) error {
|
||||
func (q *sqlBuilder) writeFrom(statement statementType, table ReadableTable) error {
|
||||
q.newLine()
|
||||
q.writeString("FROM")
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ func (q *queryData) writeFrom(statement statementType, table ReadableTable) erro
|
|||
return err
|
||||
}
|
||||
|
||||
func (q *queryData) writeWhere(statement statementType, where Expression) error {
|
||||
func (q *sqlBuilder) writeWhere(statement statementType, where Expression) error {
|
||||
q.newLine()
|
||||
q.writeString("WHERE")
|
||||
|
||||
|
|
@ -91,7 +91,7 @@ func (q *queryData) writeWhere(statement statementType, where Expression) error
|
|||
return err
|
||||
}
|
||||
|
||||
func (q *queryData) writeGroupBy(statement statementType, groupBy []groupByClause) error {
|
||||
func (q *sqlBuilder) writeGroupBy(statement statementType, groupBy []groupByClause) error {
|
||||
q.newLine()
|
||||
q.writeString("GROUP BY")
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ func (q *queryData) writeGroupBy(statement statementType, groupBy []groupByClaus
|
|||
return err
|
||||
}
|
||||
|
||||
func (q *queryData) writeOrderBy(statement statementType, orderBy []OrderByClause) error {
|
||||
func (q *sqlBuilder) writeOrderBy(statement statementType, orderBy []OrderByClause) error {
|
||||
q.newLine()
|
||||
q.writeString("ORDER BY")
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ func (q *queryData) writeOrderBy(statement statementType, orderBy []OrderByClaus
|
|||
return err
|
||||
}
|
||||
|
||||
func (q *queryData) writeHaving(statement statementType, having Expression) error {
|
||||
func (q *sqlBuilder) writeHaving(statement statementType, having Expression) error {
|
||||
q.newLine()
|
||||
q.writeString("HAVING")
|
||||
|
||||
|
|
@ -124,7 +124,7 @@ func (q *queryData) writeHaving(statement statementType, having Expression) erro
|
|||
return err
|
||||
}
|
||||
|
||||
func (q *queryData) writeReturning(statement statementType, returning []projection) error {
|
||||
func (q *sqlBuilder) writeReturning(statement statementType, returning []projection) error {
|
||||
if len(returning) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
|
@ -136,12 +136,12 @@ func (q *queryData) writeReturning(statement statementType, returning []projecti
|
|||
return q.writeProjections(statement, returning)
|
||||
}
|
||||
|
||||
func (q *queryData) newLine() {
|
||||
func (q *sqlBuilder) newLine() {
|
||||
q.write([]byte{'\n'})
|
||||
q.write(bytes.Repeat([]byte{' '}, q.ident))
|
||||
}
|
||||
|
||||
func (q *queryData) write(data []byte) {
|
||||
func (q *sqlBuilder) write(data []byte) {
|
||||
if len(data) == 0 {
|
||||
return
|
||||
}
|
||||
|
|
@ -162,15 +162,15 @@ func isPostSeparator(b byte) bool {
|
|||
return b == ' ' || b == '.' || b == ',' || b == ')' || b == '\n' || b == ':'
|
||||
}
|
||||
|
||||
func (q *queryData) writeQuotedString(str string) {
|
||||
func (q *sqlBuilder) writeQuotedString(str string) {
|
||||
q.writeString(`"` + str + `"`)
|
||||
}
|
||||
|
||||
func (q *queryData) writeString(str string) {
|
||||
func (q *sqlBuilder) writeString(str string) {
|
||||
q.write([]byte(str))
|
||||
}
|
||||
|
||||
func (q *queryData) writeIdentifier(name string) {
|
||||
func (q *sqlBuilder) writeIdentifier(name string) {
|
||||
quoteWrap := name != strings.ToLower(name) || strings.ContainsAny(name, ". -")
|
||||
|
||||
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})
|
||||
}
|
||||
|
||||
func (q *queryData) finalize() (string, []interface{}) {
|
||||
func (q *sqlBuilder) finalize() (string, []interface{}) {
|
||||
return q.buff.String() + ";\n", q.args
|
||||
}
|
||||
|
||||
func (q *queryData) insertConstantArgument(arg interface{}) {
|
||||
func (q *sqlBuilder) insertConstantArgument(arg interface{}) {
|
||||
q.writeString(ArgToString(arg))
|
||||
}
|
||||
|
||||
func (q *queryData) insertPreparedArgument(arg interface{}) {
|
||||
func (q *sqlBuilder) insertPreparedArgument(arg interface{}) {
|
||||
q.args = append(q.args, arg)
|
||||
argPlaceholder := "$" + strconv.Itoa(len(q.args))
|
||||
|
||||
q.writeString(argPlaceholder)
|
||||
}
|
||||
|
||||
func (q *queryData) reset() {
|
||||
func (q *sqlBuilder) reset() {
|
||||
q.buff.Reset()
|
||||
q.args = []interface{}{}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/go-jet/jet/generator/postgresgen"
|
||||
"github.com/go-jet/jet/generator/postgres"
|
||||
"os"
|
||||
)
|
||||
|
||||
|
|
@ -39,12 +39,12 @@ func init() {
|
|||
func main() {
|
||||
|
||||
if host == "" || port == "" || user == "" || dbName == "" || schemaName == "" {
|
||||
fmt.Println("jetgen: required flag missing")
|
||||
fmt.Println("jet: required flag missing")
|
||||
flag.Usage()
|
||||
os.Exit(-2)
|
||||
}
|
||||
|
||||
genData := postgresgen.DBConnection{
|
||||
genData := postgres.DBConnection{
|
||||
Host: host,
|
||||
Port: port,
|
||||
User: user,
|
||||
|
|
@ -56,7 +56,7 @@ func main() {
|
|||
SchemaName: schemaName,
|
||||
}
|
||||
|
||||
err := postgresgen.Generate(destDir, genData)
|
||||
err := postgres.Generate(destDir, genData)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
|
|
@ -61,7 +61,7 @@ func (c *columnImpl) defaultAlias() string {
|
|||
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 {
|
||||
// set Statement (UNION, EXCEPT ...) can reference only select projections in order by clause
|
||||
out.writeString(`"` + c.defaultAlias() + `"`) //always quote
|
||||
|
|
@ -72,7 +72,7 @@ func (c *columnImpl) serializeForOrderBy(statement statementType, out *queryData
|
|||
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)
|
||||
|
||||
if err != nil {
|
||||
|
|
@ -84,7 +84,7 @@ func (c columnImpl) serializeForProjection(statement statementType, out *queryDa
|
|||
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 {
|
||||
out.writeIdentifier(c.subQuery.Alias())
|
||||
|
|
@ -119,7 +119,7 @@ func (cl ColumnList) from(subQuery ExpressionTable) projection {
|
|||
return newProjectionList
|
||||
}
|
||||
|
||||
func (cl ColumnList) serializeForProjection(statement statementType, out *queryData) error {
|
||||
func (cl ColumnList) serializeForProjection(statement statementType, out *sqlBuilder) error {
|
||||
projections := columnListToProjectionList(cl)
|
||||
|
||||
err := serializeProjectionList(statement, projections, out)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ func (d *deleteStatementImpl) RETURNING(projections ...projection) DeleteStateme
|
|||
return d
|
||||
}
|
||||
|
||||
func (d *deleteStatementImpl) serializeImpl(out *queryData) error {
|
||||
func (d *deleteStatementImpl) serializeImpl(out *sqlBuilder) error {
|
||||
if d == 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) {
|
||||
queryData := &queryData{}
|
||||
queryData := &sqlBuilder{}
|
||||
|
||||
err = d.serializeImpl(queryData)
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ func NewEnumValue(name string) StringExpression {
|
|||
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)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,15 +66,15 @@ func (e *expressionInterfaceImpl) DESC() OrderByClause {
|
|||
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)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +94,7 @@ func newBinaryExpression(lhs, rhs Expression, operator string) binaryOpExpressio
|
|||
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 {
|
||||
return errors.New("binary Expression is nil")
|
||||
}
|
||||
|
|
@ -143,7 +143,7 @@ func newPrefixExpression(expression Expression, operator string) prefixOpExpress
|
|||
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 {
|
||||
return errors.New("Prefix Expression is nil.")
|
||||
}
|
||||
|
|
@ -175,7 +175,7 @@ func newPostfixOpExpression(expression Expression, operator string) postfixOpExp
|
|||
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 {
|
||||
return errors.New("Postifx operator Expression is nil.")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ type intervalExpression struct {
|
|||
|
||||
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 '")
|
||||
|
||||
duration := c.duration
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ func (e *expressionTableImpl) AllColumns() ProjectionList {
|
|||
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 {
|
||||
return errors.New("Expression table is nil. ")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ func newFunc(name string, expressions []Expression, parent Expression) *funcExpr
|
|||
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 {
|
||||
return errors.New("Function expressions is nil. ")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ func TestFuncLEAST(t *testing.T) {
|
|||
func TestInterval(t *testing.T) {
|
||||
query := INTERVAL(`6 years 5 months 4 days 3 hours 2 minutes 1 second`)
|
||||
|
||||
queryData := &queryData{}
|
||||
queryData := &sqlBuilder{}
|
||||
|
||||
err := query.serialize(select_statement, queryData)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package postgresgen
|
||||
package postgres
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package postgresgen
|
||||
package postgres
|
||||
|
||||
var autoGenWarningTemplate = `
|
||||
//
|
||||
// Code generated by jetgen DO NOT EDIT.
|
||||
// Code generated by go-jet DO NOT EDIT.
|
||||
// Generated at {{now}}
|
||||
//
|
||||
// WARNING: Changes to this file may cause incorrect behavior and will be lost
|
||||
// if the code is regenerated
|
||||
//
|
||||
// Licence under github.com/go-jet/jet/LICENSE
|
||||
// Licence under: https://github.com/go-jet/jet/blob/master/LICENSE
|
||||
//
|
||||
|
||||
`
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package jet
|
||||
|
||||
type groupByClause interface {
|
||||
serializeForGroupBy(statement statementType, out *queryData) error
|
||||
serializeForGroupBy(statement statementType, out *sqlBuilder) error
|
||||
}
|
||||
|
||||
// TODO: GROUPING SETS, CUBE, and ROLLUP
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ func (i *insertStatementImpl) DebugSql() (query string, err error) {
|
|||
}
|
||||
|
||||
func (i *insertStatementImpl) Sql() (sql string, args []interface{}, err error) {
|
||||
queryData := &queryData{}
|
||||
queryData := &sqlBuilder{}
|
||||
|
||||
queryData.newLine()
|
||||
queryData.writeString("INSERT INTO")
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ var (
|
|||
|
||||
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))
|
||||
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ func constLiteral(value interface{}) *literalExpression {
|
|||
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 {
|
||||
out.insertConstantArgument(l.value)
|
||||
} else {
|
||||
|
|
@ -189,7 +189,7 @@ func newNullLiteral() Expression {
|
|||
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")
|
||||
return nil
|
||||
}
|
||||
|
|
@ -207,7 +207,7 @@ func newStarLiteral() Expression {
|
|||
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("*")
|
||||
return nil
|
||||
}
|
||||
|
|
@ -219,7 +219,7 @@ type wrap struct {
|
|||
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("(")
|
||||
err := serializeExpressionList(statement, n.expressions, ", ", out)
|
||||
out.writeString(")")
|
||||
|
|
@ -240,7 +240,7 @@ type rawExpression struct {
|
|||
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)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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. ")
|
||||
}
|
||||
|
||||
out := &queryData{}
|
||||
out := &sqlBuilder{}
|
||||
|
||||
out.newLine()
|
||||
out.writeString("LOCK TABLE")
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ func (c *caseOperatorImpl) ELSE(els Expression) CaseOperatorExpression {
|
|||
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 {
|
||||
return errors.New("Case Expression is nil. ")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package jet
|
|||
import "errors"
|
||||
|
||||
type OrderByClause interface {
|
||||
serializeForOrderBy(statement statementType, out *queryData) error
|
||||
serializeForOrderBy(statement statementType, out *sqlBuilder) error
|
||||
}
|
||||
|
||||
type orderByClauseImpl struct {
|
||||
|
|
@ -11,7 +11,7 @@ type orderByClauseImpl struct {
|
|||
ascent bool
|
||||
}
|
||||
|
||||
func (o *orderByClauseImpl) serializeForOrderBy(statement statementType, out *queryData) error {
|
||||
func (o *orderByClauseImpl) serializeForOrderBy(statement statementType, out *sqlBuilder) error {
|
||||
if o.expression == nil {
|
||||
return errors.New("nil orderBy by clause.")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package jet
|
||||
|
||||
type projection interface {
|
||||
serializeForProjection(statement statementType, out *queryData) error
|
||||
serializeForProjection(statement statementType, out *sqlBuilder) error
|
||||
from(subQuery ExpressionTable) projection
|
||||
}
|
||||
|
||||
|
|
@ -18,7 +18,7 @@ func (cl ProjectionList) from(subQuery ExpressionTable) projection {
|
|||
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)
|
||||
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ func (s *selectStatementImpl) projections() []projection {
|
|||
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 {
|
||||
return errors.New("Select expression is nil. ")
|
||||
}
|
||||
|
|
@ -173,7 +173,7 @@ func (s *selectStatementImpl) serialize(statement statementType, out *queryData,
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *selectStatementImpl) serializeImpl(out *queryData) error {
|
||||
func (s *selectStatementImpl) serializeImpl(out *sqlBuilder) error {
|
||||
if s == 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) {
|
||||
queryData := queryData{}
|
||||
queryData := sqlBuilder{}
|
||||
|
||||
err = s.serializeImpl(&queryData)
|
||||
|
||||
|
|
@ -326,7 +326,7 @@ func (s *selectLockImpl) SKIP_LOCKED() SelectLock {
|
|||
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)
|
||||
|
||||
if s.noWait {
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ func (s *setStatementImpl) projections() []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 {
|
||||
return errors.New("Set expression is nil. ")
|
||||
}
|
||||
|
|
@ -96,7 +96,7 @@ func (s *setStatementImpl) serialize(statement statementType, out *queryData, op
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *setStatementImpl) serializeImpl(out *queryData) error {
|
||||
func (s *setStatementImpl) serializeImpl(out *sqlBuilder) error {
|
||||
if s == 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) {
|
||||
queryData := &queryData{}
|
||||
queryData := &sqlBuilder{}
|
||||
|
||||
err = s.serializeImpl(queryData)
|
||||
|
||||
|
|
|
|||
4
table.go
4
table.go
|
|
@ -168,7 +168,7 @@ func (t *tableImpl) columns() []column {
|
|||
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 {
|
||||
return errors.New("tableImpl is nil. ")
|
||||
}
|
||||
|
|
@ -235,7 +235,7 @@ func (t *joinTable) columns() []column {
|
|||
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 {
|
||||
return errors.New("Join table is nil. ")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ var table3 = NewTable(
|
|||
table3StrCol)
|
||||
|
||||
func assertClauseSerialize(t *testing.T, clause clause, query string, args ...interface{}) {
|
||||
out := queryData{}
|
||||
out := sqlBuilder{}
|
||||
err := clause.serialize(select_statement, &out)
|
||||
|
||||
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) {
|
||||
out := queryData{}
|
||||
out := sqlBuilder{}
|
||||
err := clause.serialize(select_statement, &out)
|
||||
|
||||
//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{}) {
|
||||
out := queryData{}
|
||||
out := sqlBuilder{}
|
||||
err := projection.serializeForProjection(select_statement, &out)
|
||||
|
||||
assert.NilError(t, err)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package main
|
|||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/go-jet/jet/generator/postgresgen"
|
||||
"github.com/go-jet/jet/generator/postgres"
|
||||
"github.com/go-jet/jet/tests/dbconfig"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
|
@ -33,7 +33,7 @@ func main() {
|
|||
|
||||
_, err = db.Exec(string(testSampleSql))
|
||||
|
||||
err = postgresgen.Generate("./.gentestdata", postgresgen.DBConnection{
|
||||
err = postgres.Generate("./.gentestdata", postgres.DBConnection{
|
||||
Host: dbconfig.Host,
|
||||
Port: "5432",
|
||||
User: dbconfig.User,
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ func (u *updateStatementImpl) RETURNING(projections ...projection) UpdateStateme
|
|||
}
|
||||
|
||||
func (u *updateStatementImpl) Sql() (sql string, args []interface{}, err error) {
|
||||
out := &queryData{}
|
||||
out := &sqlBuilder{}
|
||||
|
||||
out.newLine()
|
||||
out.writeString("UPDATE")
|
||||
|
|
|
|||
12
utils.go
12
utils.go
|
|
@ -7,7 +7,7 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
func serializeOrderByClauseList(statement statementType, orderByClauses []OrderByClause, out *queryData) error {
|
||||
func serializeOrderByClauseList(statement statementType, orderByClauses []OrderByClause, out *sqlBuilder) error {
|
||||
|
||||
for i, value := range orderByClauses {
|
||||
if i > 0 {
|
||||
|
|
@ -24,7 +24,7 @@ func serializeOrderByClauseList(statement statementType, orderByClauses []OrderB
|
|||
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 {
|
||||
if i > 0 {
|
||||
|
|
@ -43,7 +43,7 @@ func serializeGroupByClauseList(statement statementType, clauses []groupByClause
|
|||
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 {
|
||||
if i > 0 {
|
||||
|
|
@ -62,7 +62,7 @@ func serializeClauseList(statement statementType, clauses []clause, out *queryDa
|
|||
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 {
|
||||
if i > 0 {
|
||||
|
|
@ -79,7 +79,7 @@ func serializeExpressionList(statement statementType, expressions []Expression,
|
|||
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 {
|
||||
if i > 0 {
|
||||
out.writeString(",")
|
||||
|
|
@ -98,7 +98,7 @@ func serializeProjectionList(statement statementType, projections []projection,
|
|||
return nil
|
||||
}
|
||||
|
||||
func serializeColumnNames(columns []column, out *queryData) error {
|
||||
func serializeColumnNames(columns []column, out *sqlBuilder) error {
|
||||
for i, col := range columns {
|
||||
if i > 0 {
|
||||
out.writeString(", ")
|
||||
|
|
|
|||
|
|
@ -6,18 +6,18 @@ This files can be generated in two ways:
|
|||
|
||||
#### 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
|
||||
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.
|
||||
|
||||
Test jetgen can be found in the PATH.
|
||||
Test jet can be found in the PATH.
|
||||
```sh
|
||||
jetgen -h
|
||||
Usage of jetgen:
|
||||
jet -h
|
||||
Usage of jet:
|
||||
-host string
|
||||
Database host path (Example: localhost)
|
||||
-port string
|
||||
|
|
@ -40,7 +40,7 @@ Usage of jetgen:
|
|||
|
||||
Now to generate sample database:
|
||||
```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
|
||||
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
|
||||
|
||||
```
|
||||
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",
|
||||
Port: "5432",
|
||||
User: "jet",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue