MySQL refactor.

This commit is contained in:
go-jet 2019-08-11 12:13:59 +02:00
parent 8519ccbdd0
commit 4fbf576370
36 changed files with 1080 additions and 270 deletions

View file

@ -24,8 +24,6 @@ func NewDialect() jet.Dialect {
ArgumentPlaceholder: func(ord int) string {
return "$" + strconv.Itoa(ord)
},
//SetClause: postgresSetClause,
SupportsReturning: true,
}
return jet.NewDialect(dialectParams)

View file

@ -122,23 +122,3 @@ func (s *selectStatementImpl) FOR(lock SelectLock) SelectStatement {
func (s *selectStatementImpl) AsTable(alias string) SelectTable {
return newSelectTable(s, alias)
}
type SelectTable interface {
ReadableTable
jet.SelectTable
}
type selectTableImpl struct {
jet.SelectTableImpl2
readableTableInterfaceImpl
}
func newSelectTable(selectStmt jet.StatementWithProjections, alias string) SelectTable {
subQuery := &selectTableImpl{
SelectTableImpl2: jet.NewSelectTable(selectStmt, alias),
}
subQuery.readableTableInterfaceImpl.parent = subQuery
return subQuery
}

23
postgres/select_table.go Normal file
View file

@ -0,0 +1,23 @@
package postgres
import "github.com/go-jet/jet/internal/jet"
type SelectTable interface {
ReadableTable
jet.SelectTable
}
type selectTableImpl struct {
jet.SelectTableImpl2
readableTableInterfaceImpl
}
func newSelectTable(selectStmt jet.StatementWithProjections, alias string) SelectTable {
subQuery := &selectTableImpl{
SelectTableImpl2: jet.NewSelectTable(selectStmt, alias),
}
subQuery.readableTableInterfaceImpl.parent = subQuery
return subQuery
}

View file

@ -120,10 +120,6 @@ func NewTable(schemaName, name string, columns ...jet.Column) Table {
TableImpl2: jet.NewTable2(Dialect, schemaName, name, columns...),
}
for _, c := range columns {
c.SetTableName(name)
}
t.readableTableInterfaceImpl.parent = t
t.writableTableInterfaceImpl.parent = t

View file

@ -1,6 +1,9 @@
package postgres
import "github.com/go-jet/jet/internal/jet"
import (
"errors"
"github.com/go-jet/jet/internal/jet"
)
// UpdateStatement is interface of SQL UPDATE statement
type UpdateStatement interface {
@ -17,7 +20,7 @@ type updateStatementImpl struct {
jet.StatementImpl
Update jet.ClauseUpdate
Set jet.ClauseSet
Set ClauseSet
Where jet.ClauseWhere
Returning jet.ClauseReturning
}
@ -53,3 +56,49 @@ func (u *updateStatementImpl) RETURNING(projections ...jet.Projection) UpdateSta
u.Returning.Projections = projections
return u
}
type ClauseSet struct {
Columns []jet.IColumn
Values []jet.Serializer
}
func (s *ClauseSet) Serialize(statementType jet.StatementType, out *jet.SqlBuilder) error {
out.NewLine()
out.WriteString("SET")
if len(s.Columns) == 0 {
return errors.New("jet: no columns selected")
}
if len(s.Columns) > 1 {
out.WriteString("(")
}
err := jet.SerializeColumnNames(s.Columns, out)
if err != nil {
return err
}
if len(s.Columns) > 1 {
out.WriteString(")")
}
out.WriteString("=")
if len(s.Values) > 1 {
out.WriteString("(")
}
err = jet.SerializeClauseList(statementType, s.Values, out)
if err != nil {
return err
}
if len(s.Values) > 1 {
out.WriteString(")")
}
return nil
}