Pre-release clean up.
This commit is contained in:
parent
23a27033a4
commit
b817f57035
27 changed files with 628 additions and 79 deletions
|
|
@ -477,12 +477,12 @@ found at project [wiki](https://github.com/go-jet/jet/wiki) page.
|
||||||
|
|
||||||
What are the benefits of writing SQL in Go using Jet? The biggest benefit is speed.
|
What are the benefits of writing SQL in Go using Jet? The biggest benefit is speed.
|
||||||
Speed is improved in 3 major areas:
|
Speed is improved in 3 major areas:
|
||||||
|
|
||||||
##### Speed of development
|
##### Speed of development
|
||||||
|
|
||||||
Writing SQL queries is much easier directly from Go, because programmer has the help of SQL code completion and SQL type safety directly in Go.
|
Writing SQL queries is much easier directly from Go, because programmer has the help of SQL code completion and SQL type safety directly in Go.
|
||||||
Writing code is much faster and code is more robust. Automatic scan to arbitrary structure removes a lot of headache and
|
Writing code is much faster and code is more robust. Automatic scan to arbitrary structure removes a lot of headache and
|
||||||
boilerplate code needed to structure database query result.
|
boilerplate code needed to structure database query result.
|
||||||
With Jet programmer has the power of SQL but also ease of use of NoSQL.
|
|
||||||
|
|
||||||
##### Speed of execution
|
##### Speed of execution
|
||||||
|
|
||||||
|
|
|
||||||
25
examples/quick-start/.gen/jetdb/dvds/enum/mpaa_rating.go
Normal file
25
examples/quick-start/.gen/jetdb/dvds/enum/mpaa_rating.go
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package enum
|
||||||
|
|
||||||
|
import "github.com/go-jet/jet"
|
||||||
|
|
||||||
|
var MpaaRating = &struct {
|
||||||
|
G jet.StringExpression
|
||||||
|
Pg jet.StringExpression
|
||||||
|
Pg13 jet.StringExpression
|
||||||
|
R jet.StringExpression
|
||||||
|
Nc17 jet.StringExpression
|
||||||
|
}{
|
||||||
|
G: jet.NewEnumValue("G"),
|
||||||
|
Pg: jet.NewEnumValue("PG"),
|
||||||
|
Pg13: jet.NewEnumValue("PG-13"),
|
||||||
|
R: jet.NewEnumValue("R"),
|
||||||
|
Nc17: jet.NewEnumValue("NC-17"),
|
||||||
|
}
|
||||||
20
examples/quick-start/.gen/jetdb/dvds/model/actor.go
Normal file
20
examples/quick-start/.gen/jetdb/dvds/model/actor.go
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Actor struct {
|
||||||
|
ActorID int32 `sql:"primary_key"`
|
||||||
|
FirstName string
|
||||||
|
LastName string
|
||||||
|
LastUpdate time.Time
|
||||||
|
}
|
||||||
19
examples/quick-start/.gen/jetdb/dvds/model/category.go
Normal file
19
examples/quick-start/.gen/jetdb/dvds/model/category.go
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Category struct {
|
||||||
|
CategoryID int32 `sql:"primary_key"`
|
||||||
|
Name string
|
||||||
|
LastUpdate time.Time
|
||||||
|
}
|
||||||
29
examples/quick-start/.gen/jetdb/dvds/model/film.go
Normal file
29
examples/quick-start/.gen/jetdb/dvds/model/film.go
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Film struct {
|
||||||
|
FilmID int32 `sql:"primary_key"`
|
||||||
|
Title string
|
||||||
|
Description *string
|
||||||
|
ReleaseYear *int32
|
||||||
|
LanguageID int16
|
||||||
|
RentalDuration int16
|
||||||
|
RentalRate float64
|
||||||
|
Length *int16
|
||||||
|
ReplacementCost float64
|
||||||
|
Rating *MpaaRating
|
||||||
|
LastUpdate time.Time
|
||||||
|
SpecialFeatures *string
|
||||||
|
Fulltext string
|
||||||
|
}
|
||||||
19
examples/quick-start/.gen/jetdb/dvds/model/film_actor.go
Normal file
19
examples/quick-start/.gen/jetdb/dvds/model/film_actor.go
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FilmActor struct {
|
||||||
|
ActorID int16 `sql:"primary_key"`
|
||||||
|
FilmID int16 `sql:"primary_key"`
|
||||||
|
LastUpdate time.Time
|
||||||
|
}
|
||||||
19
examples/quick-start/.gen/jetdb/dvds/model/film_category.go
Normal file
19
examples/quick-start/.gen/jetdb/dvds/model/film_category.go
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FilmCategory struct {
|
||||||
|
FilmID int16 `sql:"primary_key"`
|
||||||
|
CategoryID int16 `sql:"primary_key"`
|
||||||
|
LastUpdate time.Time
|
||||||
|
}
|
||||||
19
examples/quick-start/.gen/jetdb/dvds/model/language.go
Normal file
19
examples/quick-start/.gen/jetdb/dvds/model/language.go
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Language struct {
|
||||||
|
LanguageID int32 `sql:"primary_key"`
|
||||||
|
Name string
|
||||||
|
LastUpdate time.Time
|
||||||
|
}
|
||||||
48
examples/quick-start/.gen/jetdb/dvds/model/mpaa_rating.go
Normal file
48
examples/quick-start/.gen/jetdb/dvds/model/mpaa_rating.go
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
type MpaaRating string
|
||||||
|
|
||||||
|
const (
|
||||||
|
MpaaRating_G MpaaRating = "G"
|
||||||
|
MpaaRating_Pg MpaaRating = "PG"
|
||||||
|
MpaaRating_Pg13 MpaaRating = "PG-13"
|
||||||
|
MpaaRating_R MpaaRating = "R"
|
||||||
|
MpaaRating_Nc17 MpaaRating = "NC-17"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e *MpaaRating) Scan(value interface{}) error {
|
||||||
|
if v, ok := value.(string); !ok {
|
||||||
|
return errors.New("jet: Invalid data for MpaaRating enum")
|
||||||
|
} else {
|
||||||
|
switch string(v) {
|
||||||
|
case "G":
|
||||||
|
*e = MpaaRating_G
|
||||||
|
case "PG":
|
||||||
|
*e = MpaaRating_Pg
|
||||||
|
case "PG-13":
|
||||||
|
*e = MpaaRating_Pg13
|
||||||
|
case "R":
|
||||||
|
*e = MpaaRating_R
|
||||||
|
case "NC-17":
|
||||||
|
*e = MpaaRating_Nc17
|
||||||
|
default:
|
||||||
|
return errors.New("jet: Inavlid data " + string(v) + "for MpaaRating enum")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e MpaaRating) String() string {
|
||||||
|
return string(e)
|
||||||
|
}
|
||||||
59
examples/quick-start/.gen/jetdb/dvds/table/actor.go
Normal file
59
examples/quick-start/.gen/jetdb/dvds/table/actor.go
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-jet/jet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Actor = newActorTable()
|
||||||
|
|
||||||
|
type ActorTable struct {
|
||||||
|
jet.Table
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
ActorID jet.ColumnInteger
|
||||||
|
FirstName jet.ColumnString
|
||||||
|
LastName jet.ColumnString
|
||||||
|
LastUpdate jet.ColumnTimestamp
|
||||||
|
|
||||||
|
AllColumns jet.ColumnList
|
||||||
|
MutableColumns jet.ColumnList
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates new ActorTable with assigned alias
|
||||||
|
func (a *ActorTable) AS(alias string) *ActorTable {
|
||||||
|
aliasTable := newActorTable()
|
||||||
|
|
||||||
|
aliasTable.Table.AS(alias)
|
||||||
|
|
||||||
|
return aliasTable
|
||||||
|
}
|
||||||
|
|
||||||
|
func newActorTable() *ActorTable {
|
||||||
|
var (
|
||||||
|
ActorIDColumn = jet.IntegerColumn("actor_id")
|
||||||
|
FirstNameColumn = jet.StringColumn("first_name")
|
||||||
|
LastNameColumn = jet.StringColumn("last_name")
|
||||||
|
LastUpdateColumn = jet.TimestampColumn("last_update")
|
||||||
|
)
|
||||||
|
|
||||||
|
return &ActorTable{
|
||||||
|
Table: jet.NewTable("dvds", "actor", ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn),
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
ActorID: ActorIDColumn,
|
||||||
|
FirstName: FirstNameColumn,
|
||||||
|
LastName: LastNameColumn,
|
||||||
|
LastUpdate: LastUpdateColumn,
|
||||||
|
|
||||||
|
AllColumns: jet.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn},
|
||||||
|
MutableColumns: jet.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn},
|
||||||
|
}
|
||||||
|
}
|
||||||
56
examples/quick-start/.gen/jetdb/dvds/table/category.go
Normal file
56
examples/quick-start/.gen/jetdb/dvds/table/category.go
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-jet/jet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Category = newCategoryTable()
|
||||||
|
|
||||||
|
type CategoryTable struct {
|
||||||
|
jet.Table
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
CategoryID jet.ColumnInteger
|
||||||
|
Name jet.ColumnString
|
||||||
|
LastUpdate jet.ColumnTimestamp
|
||||||
|
|
||||||
|
AllColumns jet.ColumnList
|
||||||
|
MutableColumns jet.ColumnList
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates new CategoryTable with assigned alias
|
||||||
|
func (a *CategoryTable) AS(alias string) *CategoryTable {
|
||||||
|
aliasTable := newCategoryTable()
|
||||||
|
|
||||||
|
aliasTable.Table.AS(alias)
|
||||||
|
|
||||||
|
return aliasTable
|
||||||
|
}
|
||||||
|
|
||||||
|
func newCategoryTable() *CategoryTable {
|
||||||
|
var (
|
||||||
|
CategoryIDColumn = jet.IntegerColumn("category_id")
|
||||||
|
NameColumn = jet.StringColumn("name")
|
||||||
|
LastUpdateColumn = jet.TimestampColumn("last_update")
|
||||||
|
)
|
||||||
|
|
||||||
|
return &CategoryTable{
|
||||||
|
Table: jet.NewTable("dvds", "category", CategoryIDColumn, NameColumn, LastUpdateColumn),
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
CategoryID: CategoryIDColumn,
|
||||||
|
Name: NameColumn,
|
||||||
|
LastUpdate: LastUpdateColumn,
|
||||||
|
|
||||||
|
AllColumns: jet.ColumnList{CategoryIDColumn, NameColumn, LastUpdateColumn},
|
||||||
|
MutableColumns: jet.ColumnList{NameColumn, LastUpdateColumn},
|
||||||
|
}
|
||||||
|
}
|
||||||
86
examples/quick-start/.gen/jetdb/dvds/table/film.go
Normal file
86
examples/quick-start/.gen/jetdb/dvds/table/film.go
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-jet/jet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Film = newFilmTable()
|
||||||
|
|
||||||
|
type FilmTable struct {
|
||||||
|
jet.Table
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
FilmID jet.ColumnInteger
|
||||||
|
Title jet.ColumnString
|
||||||
|
Description jet.ColumnString
|
||||||
|
ReleaseYear jet.ColumnInteger
|
||||||
|
LanguageID jet.ColumnInteger
|
||||||
|
RentalDuration jet.ColumnInteger
|
||||||
|
RentalRate jet.ColumnFloat
|
||||||
|
Length jet.ColumnInteger
|
||||||
|
ReplacementCost jet.ColumnFloat
|
||||||
|
Rating jet.ColumnString
|
||||||
|
LastUpdate jet.ColumnTimestamp
|
||||||
|
SpecialFeatures jet.ColumnString
|
||||||
|
Fulltext jet.ColumnString
|
||||||
|
|
||||||
|
AllColumns jet.ColumnList
|
||||||
|
MutableColumns jet.ColumnList
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates new FilmTable with assigned alias
|
||||||
|
func (a *FilmTable) AS(alias string) *FilmTable {
|
||||||
|
aliasTable := newFilmTable()
|
||||||
|
|
||||||
|
aliasTable.Table.AS(alias)
|
||||||
|
|
||||||
|
return aliasTable
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFilmTable() *FilmTable {
|
||||||
|
var (
|
||||||
|
FilmIDColumn = jet.IntegerColumn("film_id")
|
||||||
|
TitleColumn = jet.StringColumn("title")
|
||||||
|
DescriptionColumn = jet.StringColumn("description")
|
||||||
|
ReleaseYearColumn = jet.IntegerColumn("release_year")
|
||||||
|
LanguageIDColumn = jet.IntegerColumn("language_id")
|
||||||
|
RentalDurationColumn = jet.IntegerColumn("rental_duration")
|
||||||
|
RentalRateColumn = jet.FloatColumn("rental_rate")
|
||||||
|
LengthColumn = jet.IntegerColumn("length")
|
||||||
|
ReplacementCostColumn = jet.FloatColumn("replacement_cost")
|
||||||
|
RatingColumn = jet.StringColumn("rating")
|
||||||
|
LastUpdateColumn = jet.TimestampColumn("last_update")
|
||||||
|
SpecialFeaturesColumn = jet.StringColumn("special_features")
|
||||||
|
FulltextColumn = jet.StringColumn("fulltext")
|
||||||
|
)
|
||||||
|
|
||||||
|
return &FilmTable{
|
||||||
|
Table: jet.NewTable("dvds", "film", FilmIDColumn, TitleColumn, DescriptionColumn, ReleaseYearColumn, LanguageIDColumn, RentalDurationColumn, RentalRateColumn, LengthColumn, ReplacementCostColumn, RatingColumn, LastUpdateColumn, SpecialFeaturesColumn, FulltextColumn),
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
FilmID: FilmIDColumn,
|
||||||
|
Title: TitleColumn,
|
||||||
|
Description: DescriptionColumn,
|
||||||
|
ReleaseYear: ReleaseYearColumn,
|
||||||
|
LanguageID: LanguageIDColumn,
|
||||||
|
RentalDuration: RentalDurationColumn,
|
||||||
|
RentalRate: RentalRateColumn,
|
||||||
|
Length: LengthColumn,
|
||||||
|
ReplacementCost: ReplacementCostColumn,
|
||||||
|
Rating: RatingColumn,
|
||||||
|
LastUpdate: LastUpdateColumn,
|
||||||
|
SpecialFeatures: SpecialFeaturesColumn,
|
||||||
|
Fulltext: FulltextColumn,
|
||||||
|
|
||||||
|
AllColumns: jet.ColumnList{FilmIDColumn, TitleColumn, DescriptionColumn, ReleaseYearColumn, LanguageIDColumn, RentalDurationColumn, RentalRateColumn, LengthColumn, ReplacementCostColumn, RatingColumn, LastUpdateColumn, SpecialFeaturesColumn, FulltextColumn},
|
||||||
|
MutableColumns: jet.ColumnList{TitleColumn, DescriptionColumn, ReleaseYearColumn, LanguageIDColumn, RentalDurationColumn, RentalRateColumn, LengthColumn, ReplacementCostColumn, RatingColumn, LastUpdateColumn, SpecialFeaturesColumn, FulltextColumn},
|
||||||
|
}
|
||||||
|
}
|
||||||
56
examples/quick-start/.gen/jetdb/dvds/table/film_actor.go
Normal file
56
examples/quick-start/.gen/jetdb/dvds/table/film_actor.go
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-jet/jet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var FilmActor = newFilmActorTable()
|
||||||
|
|
||||||
|
type FilmActorTable struct {
|
||||||
|
jet.Table
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
ActorID jet.ColumnInteger
|
||||||
|
FilmID jet.ColumnInteger
|
||||||
|
LastUpdate jet.ColumnTimestamp
|
||||||
|
|
||||||
|
AllColumns jet.ColumnList
|
||||||
|
MutableColumns jet.ColumnList
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates new FilmActorTable with assigned alias
|
||||||
|
func (a *FilmActorTable) AS(alias string) *FilmActorTable {
|
||||||
|
aliasTable := newFilmActorTable()
|
||||||
|
|
||||||
|
aliasTable.Table.AS(alias)
|
||||||
|
|
||||||
|
return aliasTable
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFilmActorTable() *FilmActorTable {
|
||||||
|
var (
|
||||||
|
ActorIDColumn = jet.IntegerColumn("actor_id")
|
||||||
|
FilmIDColumn = jet.IntegerColumn("film_id")
|
||||||
|
LastUpdateColumn = jet.TimestampColumn("last_update")
|
||||||
|
)
|
||||||
|
|
||||||
|
return &FilmActorTable{
|
||||||
|
Table: jet.NewTable("dvds", "film_actor", ActorIDColumn, FilmIDColumn, LastUpdateColumn),
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
ActorID: ActorIDColumn,
|
||||||
|
FilmID: FilmIDColumn,
|
||||||
|
LastUpdate: LastUpdateColumn,
|
||||||
|
|
||||||
|
AllColumns: jet.ColumnList{ActorIDColumn, FilmIDColumn, LastUpdateColumn},
|
||||||
|
MutableColumns: jet.ColumnList{LastUpdateColumn},
|
||||||
|
}
|
||||||
|
}
|
||||||
56
examples/quick-start/.gen/jetdb/dvds/table/film_category.go
Normal file
56
examples/quick-start/.gen/jetdb/dvds/table/film_category.go
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-jet/jet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var FilmCategory = newFilmCategoryTable()
|
||||||
|
|
||||||
|
type FilmCategoryTable struct {
|
||||||
|
jet.Table
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
FilmID jet.ColumnInteger
|
||||||
|
CategoryID jet.ColumnInteger
|
||||||
|
LastUpdate jet.ColumnTimestamp
|
||||||
|
|
||||||
|
AllColumns jet.ColumnList
|
||||||
|
MutableColumns jet.ColumnList
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates new FilmCategoryTable with assigned alias
|
||||||
|
func (a *FilmCategoryTable) AS(alias string) *FilmCategoryTable {
|
||||||
|
aliasTable := newFilmCategoryTable()
|
||||||
|
|
||||||
|
aliasTable.Table.AS(alias)
|
||||||
|
|
||||||
|
return aliasTable
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFilmCategoryTable() *FilmCategoryTable {
|
||||||
|
var (
|
||||||
|
FilmIDColumn = jet.IntegerColumn("film_id")
|
||||||
|
CategoryIDColumn = jet.IntegerColumn("category_id")
|
||||||
|
LastUpdateColumn = jet.TimestampColumn("last_update")
|
||||||
|
)
|
||||||
|
|
||||||
|
return &FilmCategoryTable{
|
||||||
|
Table: jet.NewTable("dvds", "film_category", FilmIDColumn, CategoryIDColumn, LastUpdateColumn),
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
FilmID: FilmIDColumn,
|
||||||
|
CategoryID: CategoryIDColumn,
|
||||||
|
LastUpdate: LastUpdateColumn,
|
||||||
|
|
||||||
|
AllColumns: jet.ColumnList{FilmIDColumn, CategoryIDColumn, LastUpdateColumn},
|
||||||
|
MutableColumns: jet.ColumnList{LastUpdateColumn},
|
||||||
|
}
|
||||||
|
}
|
||||||
56
examples/quick-start/.gen/jetdb/dvds/table/language.go
Normal file
56
examples/quick-start/.gen/jetdb/dvds/table/language.go
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
// Generated at Wednesday, 17-Jul-19 13:11:01 CEST
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-jet/jet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Language = newLanguageTable()
|
||||||
|
|
||||||
|
type LanguageTable struct {
|
||||||
|
jet.Table
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
LanguageID jet.ColumnInteger
|
||||||
|
Name jet.ColumnString
|
||||||
|
LastUpdate jet.ColumnTimestamp
|
||||||
|
|
||||||
|
AllColumns jet.ColumnList
|
||||||
|
MutableColumns jet.ColumnList
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates new LanguageTable with assigned alias
|
||||||
|
func (a *LanguageTable) AS(alias string) *LanguageTable {
|
||||||
|
aliasTable := newLanguageTable()
|
||||||
|
|
||||||
|
aliasTable.Table.AS(alias)
|
||||||
|
|
||||||
|
return aliasTable
|
||||||
|
}
|
||||||
|
|
||||||
|
func newLanguageTable() *LanguageTable {
|
||||||
|
var (
|
||||||
|
LanguageIDColumn = jet.IntegerColumn("language_id")
|
||||||
|
NameColumn = jet.StringColumn("name")
|
||||||
|
LastUpdateColumn = jet.TimestampColumn("last_update")
|
||||||
|
)
|
||||||
|
|
||||||
|
return &LanguageTable{
|
||||||
|
Table: jet.NewTable("dvds", "language", LanguageIDColumn, NameColumn, LastUpdateColumn),
|
||||||
|
|
||||||
|
//Columns
|
||||||
|
LanguageID: LanguageIDColumn,
|
||||||
|
Name: NameColumn,
|
||||||
|
LastUpdate: LastUpdateColumn,
|
||||||
|
|
||||||
|
AllColumns: jet.ColumnList{LanguageIDColumn, NameColumn, LastUpdateColumn},
|
||||||
|
MutableColumns: jet.ColumnList{NameColumn, LastUpdateColumn},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,8 +6,10 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
|
|
||||||
. "github.com/go-jet/jet" // dot import so go code would resemble as much as native SQL
|
// dot import so go code would resemble as much as native SQL
|
||||||
. "github.com/go-jet/jet/examples/quick-start/.gen/jetdb/dvds/table" // dot import is not mandatory
|
// dot import is not mandatory
|
||||||
|
. "github.com/go-jet/jet"
|
||||||
|
. "github.com/go-jet/jet/examples/quick-start/.gen/jetdb/dvds/table"
|
||||||
|
|
||||||
"github.com/go-jet/jet/examples/quick-start/.gen/jetdb/dvds/model"
|
"github.com/go-jet/jet/examples/quick-start/.gen/jetdb/dvds/model"
|
||||||
"github.com/go-jet/jet/tests/dbconfig"
|
"github.com/go-jet/jet/tests/dbconfig"
|
||||||
|
|
@ -20,21 +22,21 @@ func main() {
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
stmt := SELECT(
|
stmt := SELECT(
|
||||||
Actor.ActorID, Actor.FirstName, Actor.LastName, Actor.LastUpdate, // list of all actor columns (equivalent to Actor.AllColumns)
|
Actor.ActorID, Actor.FirstName, Actor.LastName, Actor.LastUpdate,
|
||||||
Film.AllColumns, // list of all film columns (equivalent to Film.FilmID, Film.Title, ...)
|
Film.AllColumns,
|
||||||
Language.AllColumns,
|
Language.AllColumns,
|
||||||
Category.AllColumns,
|
Category.AllColumns,
|
||||||
).FROM(
|
).FROM(
|
||||||
Actor.
|
Actor.
|
||||||
INNER_JOIN(FilmActor, Actor.ActorID.EQ(FilmActor.ActorID)). // INNER JOIN Actor with FilmActor on condition Actor.ActorID = FilmActor.ActorID
|
INNER_JOIN(FilmActor, Actor.ActorID.EQ(FilmActor.ActorID)).
|
||||||
INNER_JOIN(Film, Film.FilmID.EQ(FilmActor.FilmID)). // then with Film, Language, FilmCategory and Category.
|
INNER_JOIN(Film, Film.FilmID.EQ(FilmActor.FilmID)).
|
||||||
INNER_JOIN(Language, Language.LanguageID.EQ(Film.LanguageID)).
|
INNER_JOIN(Language, Language.LanguageID.EQ(Film.LanguageID)).
|
||||||
INNER_JOIN(FilmCategory, FilmCategory.FilmID.EQ(Film.FilmID)).
|
INNER_JOIN(FilmCategory, FilmCategory.FilmID.EQ(Film.FilmID)).
|
||||||
INNER_JOIN(Category, Category.CategoryID.EQ(FilmCategory.CategoryID)),
|
INNER_JOIN(Category, Category.CategoryID.EQ(FilmCategory.CategoryID)),
|
||||||
).WHERE(
|
).WHERE(
|
||||||
Language.Name.EQ(String("English")). // note every column has type.
|
Language.Name.EQ(String("English")).
|
||||||
AND(Category.Name.NOT_EQ(String("Action"))). // String column Language.Name and Category.Name can be compared only with string columns and expressions
|
AND(Category.Name.NOT_EQ(String("Action"))).
|
||||||
AND(Film.Length.GT(Int(180))), // Film.Length is integer column and can be compared only with integer columns and expressions
|
AND(Film.Length.GT(Int(180))),
|
||||||
).ORDER_BY(
|
).ORDER_BY(
|
||||||
Actor.ActorID.ASC(),
|
Actor.ActorID.ASC(),
|
||||||
Film.FilmID.ASC(),
|
Film.FilmID.ASC(),
|
||||||
|
|
@ -70,6 +72,8 @@ func main() {
|
||||||
jsonText, _ := json.MarshalIndent(dest, "", "\t")
|
jsonText, _ := json.MarshalIndent(dest, "", "\t")
|
||||||
fmt.Println(string(jsonText))
|
fmt.Println(string(jsonText))
|
||||||
|
|
||||||
|
// New Destination
|
||||||
|
|
||||||
var dest2 []struct {
|
var dest2 []struct {
|
||||||
model.Category
|
model.Category
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,6 @@ func Query(db DB, context context.Context, query string, args []interface{}, des
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("TEMP SLICE SIZE: ", tempSliceValue.Len())
|
|
||||||
|
|
||||||
if tempSliceValue.Len() == 0 {
|
if tempSliceValue.Len() == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -89,8 +87,6 @@ func queryToSlice(db DB, ctx context.Context, query string, args []interface{},
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
groupTime := time.Duration(0)
|
|
||||||
|
|
||||||
slicePtrValue := reflect.ValueOf(slicePtr)
|
slicePtrValue := reflect.ValueOf(slicePtr)
|
||||||
|
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
|
|
@ -102,19 +98,13 @@ func queryToSlice(db DB, ctx context.Context, query string, args []interface{},
|
||||||
|
|
||||||
scanContext.rowNum++
|
scanContext.rowNum++
|
||||||
|
|
||||||
begin := time.Now()
|
|
||||||
|
|
||||||
_, err = mapRowToSlice(scanContext, "", slicePtrValue, nil)
|
_, err = mapRowToSlice(scanContext, "", slicePtrValue, nil)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
groupTime += time.Now().Sub(begin)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(groupTime.String())
|
|
||||||
|
|
||||||
err = rows.Close()
|
err = rows.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -126,8 +116,6 @@ func queryToSlice(db DB, ctx context.Context, query string, args []interface{},
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(strconv.Itoa(scanContext.rowNum) + " ROW(S) PROCESSED")
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -596,7 +584,6 @@ func newScanType(columnType *sql.ColumnType) reflect.Type {
|
||||||
case "DATE", "TIMESTAMP", "TIMESTAMPTZ", "TIME", "TIMETZ":
|
case "DATE", "TIMESTAMP", "TIMESTAMPTZ", "TIME", "TIMETZ":
|
||||||
return nullTimeType
|
return nullTimeType
|
||||||
default:
|
default:
|
||||||
fmt.Println("Unknown column database type " + columnType.DatabaseTypeName() + " using string as default.")
|
|
||||||
return nullStringType
|
return nullStringType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ func (c ColumnInfo) SqlBuilderColumnType() string {
|
||||||
case "real", "numeric", "decimal", "double precision":
|
case "real", "numeric", "decimal", "double precision":
|
||||||
return "Float"
|
return "Float"
|
||||||
default:
|
default:
|
||||||
fmt.Println("Unknown sql type: " + c.DataType + ", using string column instead for sql builder.")
|
fmt.Println("Unsupported sql type: " + c.DataType + ", using string column instead for sql builder.")
|
||||||
return "String"
|
return "String"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ func (c ColumnInfo) GoBaseType() string {
|
||||||
case "uuid":
|
case "uuid":
|
||||||
return "uuid.UUID"
|
return "uuid.UUID"
|
||||||
default:
|
default:
|
||||||
fmt.Println("Unknown sql type: " + c.DataType + ", " + c.EnumName + ", using string instead for model type.")
|
fmt.Println("Unsupported sql type: " + c.DataType + ", " + c.EnumName + ", using string instead for model type.")
|
||||||
return "string"
|
return "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,3 @@ package jet
|
||||||
type groupByClause interface {
|
type groupByClause interface {
|
||||||
serializeForGroupBy(statement statementType, out *sqlBuilder) error
|
serializeForGroupBy(statement statementType, out *sqlBuilder) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: GROUPING SETS, CUBE, and ROLLUP
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package jet
|
package jet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"gotest.tools/assert"
|
"gotest.tools/assert"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
@ -183,7 +182,6 @@ func TestUnionInUnion(t *testing.T) {
|
||||||
UNION_ALL(table1.SELECT(table1Col1), table2.SELECT(table2Col3)),
|
UNION_ALL(table1.SELECT(table1Col1), table2.SELECT(table2Col3)),
|
||||||
)
|
)
|
||||||
|
|
||||||
fmt.Println(query.Sql())
|
|
||||||
assertStatement(t, query, expectedSql)
|
assertStatement(t, query, expectedSql)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
5
table.go
5
table.go
|
|
@ -1,5 +1,3 @@
|
||||||
// Modeling of tables. This is where query preparation starts
|
|
||||||
|
|
||||||
package jet
|
package jet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -30,7 +28,6 @@ type readableTable interface {
|
||||||
CROSS_JOIN(table ReadableTable) ReadableTable
|
CROSS_JOIN(table ReadableTable) ReadableTable
|
||||||
}
|
}
|
||||||
|
|
||||||
// The sql tableName write interface.
|
|
||||||
type writableTable interface {
|
type writableTable interface {
|
||||||
INSERT(columns ...column) InsertStatement
|
INSERT(columns ...column) InsertStatement
|
||||||
UPDATE(column column, columns ...column) UpdateStatement
|
UPDATE(column column, columns ...column) UpdateStatement
|
||||||
|
|
@ -148,12 +145,10 @@ func (t *tableImpl) AS(alias string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the tableName's name in the database
|
|
||||||
func (t *tableImpl) SchemaName() string {
|
func (t *tableImpl) SchemaName() string {
|
||||||
return t.schemaName
|
return t.schemaName
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the tableName's name in the database
|
|
||||||
func (t *tableImpl) TableName() string {
|
func (t *tableImpl) TableName() string {
|
||||||
return t.name
|
return t.name
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
. "github.com/go-jet/jet"
|
. "github.com/go-jet/jet"
|
||||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
||||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
||||||
|
|
@ -14,8 +13,6 @@ func TestAllTypesSelect(t *testing.T) {
|
||||||
dest := []model.AllTypes{}
|
dest := []model.AllTypes{}
|
||||||
|
|
||||||
err := AllTypes.SELECT(AllTypes.AllColumns).Query(db, &dest)
|
err := AllTypes.SELECT(AllTypes.AllColumns).Query(db, &dest)
|
||||||
|
|
||||||
fmt.Println(err)
|
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
|
|
||||||
assert.DeepEqual(t, dest[0], allTypesRow0)
|
assert.DeepEqual(t, dest[0], allTypesRow0)
|
||||||
|
|
|
||||||
|
|
@ -188,18 +188,26 @@ VALUES
|
||||||
|
|
||||||
-- Person table ------------------
|
-- Person table ------------------
|
||||||
|
|
||||||
DROP TABLE IF EXISTS test_sample.person;
|
|
||||||
|
|
||||||
CREATE TABLE test_sample.person(
|
|
||||||
person_id uuid,
|
|
||||||
first_name varchar(100),
|
|
||||||
last_name varchar(100)
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TYPE IF EXISTS test_sample.MOOD CASCADE;
|
DROP TYPE IF EXISTS test_sample.MOOD CASCADE;
|
||||||
|
|
||||||
CREATE TYPE test_sample.MOOD AS ENUM ('sad', 'ok', 'happy');
|
CREATE TYPE test_sample.MOOD AS ENUM ('sad', 'ok', 'happy');
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS test_sample.person;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE test_sample.person(
|
||||||
|
person_id uuid NOT NULL PRIMARY KEY,
|
||||||
|
first_name varchar(100),
|
||||||
|
last_name varchar(100),
|
||||||
|
"Mood" test_sample.mood
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO test_sample.person(person_id, first_name, last_name, "Mood") VALUES
|
||||||
|
('b68dbff4-a87d-11e9-a7f2-98ded00c39c6', 'Sad', 'John', 'sad'),
|
||||||
|
('b68dbff5-a87d-11e9-a7f2-98ded00c39c7', 'Ok', 'John', 'ok'),
|
||||||
|
('b68dbff6-a87d-11e9-a7f2-98ded00c39c8', 'Ok', 'John', 'ok');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- WEIRD TABLE NAMES --------------
|
-- WEIRD TABLE NAMES --------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/northwind/model"
|
"github.com/go-jet/jet/tests/.gentestdata/jetdb/northwind/model"
|
||||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/northwind/table"
|
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/northwind/table"
|
||||||
"gotest.tools/assert"
|
"gotest.tools/assert"
|
||||||
|
|
@ -61,8 +60,6 @@ func TestNorthwindJoinEverything(t *testing.T) {
|
||||||
err := stmt.Query(db, &dest)
|
err := stmt.Query(db, &dest)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
|
|
||||||
fmt.Println(len(dest))
|
|
||||||
|
|
||||||
//jsonSave("./testdata/northwind-all.json", dest)
|
//jsonSave("./testdata/northwind-all.json", dest)
|
||||||
assertJsonFile(t, "./testdata/northwind-all.json", dest)
|
assertJsonFile(t, "./testdata/northwind-all.json", dest)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/davecgh/go-spew/spew"
|
|
||||||
. "github.com/go-jet/jet"
|
. "github.com/go-jet/jet"
|
||||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
||||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
||||||
|
|
@ -35,30 +33,41 @@ func TestEnumType(t *testing.T) {
|
||||||
query := Person.
|
query := Person.
|
||||||
SELECT(Person.AllColumns)
|
SELECT(Person.AllColumns)
|
||||||
|
|
||||||
queryStr, args, err := query.Sql()
|
assertStatementSql(t, query, `
|
||||||
|
SELECT person.person_id AS "person.person_id",
|
||||||
|
person.first_name AS "person.first_name",
|
||||||
|
person.last_name AS "person.last_name",
|
||||||
|
person."Mood" AS "person.Mood"
|
||||||
|
FROM test_sample.person;
|
||||||
|
`)
|
||||||
|
|
||||||
assert.NilError(t, err)
|
|
||||||
fmt.Println(queryStr)
|
|
||||||
assert.Equal(t, len(args), 0)
|
|
||||||
result := []model.Person{}
|
result := []model.Person{}
|
||||||
|
|
||||||
err = query.Query(db, &result)
|
err := query.Query(db, &result)
|
||||||
|
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
//spew.Dump(result)
|
assertJson(t, result, `
|
||||||
|
[
|
||||||
type Person struct {
|
{
|
||||||
Name string
|
"PersonID": "b68dbff4-a87d-11e9-a7f2-98ded00c39c6",
|
||||||
CurrentMood model.Mood
|
"FirstName": "Sad",
|
||||||
|
"LastName": "John",
|
||||||
|
"Mood": "sad"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PersonID": "b68dbff5-a87d-11e9-a7f2-98ded00c39c7",
|
||||||
|
"FirstName": "Ok",
|
||||||
|
"LastName": "John",
|
||||||
|
"Mood": "ok"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PersonID": "b68dbff6-a87d-11e9-a7f2-98ded00c39c8",
|
||||||
|
"FirstName": "Ok",
|
||||||
|
"LastName": "John",
|
||||||
|
"Mood": "ok"
|
||||||
}
|
}
|
||||||
|
]
|
||||||
result2 := []Person{}
|
`)
|
||||||
|
|
||||||
err = query.Query(db, &result2)
|
|
||||||
|
|
||||||
assert.NilError(t, err)
|
|
||||||
|
|
||||||
spew.Dump(result2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSelecSelfJoin1(t *testing.T) {
|
func TestSelecSelfJoin1(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/davecgh/go-spew/spew"
|
|
||||||
. "github.com/go-jet/jet"
|
. "github.com/go-jet/jet"
|
||||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/model"
|
"github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/model"
|
||||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/table"
|
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/table"
|
||||||
|
|
@ -171,8 +169,6 @@ func TestScanToStruct(t *testing.T) {
|
||||||
err := query.Query(db, &dest)
|
err := query.Query(db, &dest)
|
||||||
|
|
||||||
assert.Error(t, err, `jet: can't set int32 to int, at struct field: InventoryID int of type tests.Inventory. `)
|
assert.Error(t, err, `jet: can't set int32 to int, at struct field: InventoryID int of type tests.Inventory. `)
|
||||||
|
|
||||||
fmt.Println(err)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("type mismatch scanner type", func(t *testing.T) {
|
t.Run("type mismatch scanner type", func(t *testing.T) {
|
||||||
|
|
@ -455,10 +451,6 @@ func TestScanToSlice(t *testing.T) {
|
||||||
|
|
||||||
err := query.Query(db, &dest)
|
err := query.Query(db, &dest)
|
||||||
|
|
||||||
fmt.Println(query.DebugSql())
|
|
||||||
|
|
||||||
spew.Dump(dest)
|
|
||||||
|
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
assert.DeepEqual(t, dest.Film, film1)
|
assert.DeepEqual(t, dest.Film, film1)
|
||||||
assert.DeepEqual(t, dest.IDs, []int32{1, 2, 3, 4, 5, 6, 7, 8})
|
assert.DeepEqual(t, dest.IDs, []int32{1, 2, 3, 4, 5, 6, 7, 8})
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
. "github.com/go-jet/jet"
|
. "github.com/go-jet/jet"
|
||||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
||||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
||||||
|
|
@ -17,8 +16,6 @@ func TestUpdateValues(t *testing.T) {
|
||||||
SET("Bong", "http://bong.com").
|
SET("Bong", "http://bong.com").
|
||||||
WHERE(Link.Name.EQ(String("Bing")))
|
WHERE(Link.Name.EQ(String("Bing")))
|
||||||
|
|
||||||
fmt.Println(query.DebugSql())
|
|
||||||
|
|
||||||
var expectedSql = `
|
var expectedSql = `
|
||||||
UPDATE test_sample.link
|
UPDATE test_sample.link
|
||||||
SET (name, url) = ('Bong', 'http://bong.com')
|
SET (name, url) = ('Bong', 'http://bong.com')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue