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.
|
||||
Speed is improved in 3 major areas:
|
||||
|
||||
##### 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 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.
|
||||
With Jet programmer has the power of SQL but also ease of use of NoSQL.
|
||||
|
||||
##### 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"
|
||||
_ "github.com/lib/pq"
|
||||
|
||||
. "github.com/go-jet/jet" // 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 so go code would resemble as much as native SQL
|
||||
// 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/tests/dbconfig"
|
||||
|
|
@ -20,21 +22,21 @@ func main() {
|
|||
defer db.Close()
|
||||
|
||||
stmt := SELECT(
|
||||
Actor.ActorID, Actor.FirstName, Actor.LastName, Actor.LastUpdate, // list of all actor columns (equivalent to Actor.AllColumns)
|
||||
Film.AllColumns, // list of all film columns (equivalent to Film.FilmID, Film.Title, ...)
|
||||
Actor.ActorID, Actor.FirstName, Actor.LastName, Actor.LastUpdate,
|
||||
Film.AllColumns,
|
||||
Language.AllColumns,
|
||||
Category.AllColumns,
|
||||
).FROM(
|
||||
Actor.
|
||||
INNER_JOIN(FilmActor, Actor.ActorID.EQ(FilmActor.ActorID)). // INNER JOIN Actor with FilmActor on condition Actor.ActorID = FilmActor.ActorID
|
||||
INNER_JOIN(Film, Film.FilmID.EQ(FilmActor.FilmID)). // then with Film, Language, FilmCategory and Category.
|
||||
INNER_JOIN(FilmActor, Actor.ActorID.EQ(FilmActor.ActorID)).
|
||||
INNER_JOIN(Film, Film.FilmID.EQ(FilmActor.FilmID)).
|
||||
INNER_JOIN(Language, Language.LanguageID.EQ(Film.LanguageID)).
|
||||
INNER_JOIN(FilmCategory, FilmCategory.FilmID.EQ(Film.FilmID)).
|
||||
INNER_JOIN(Category, Category.CategoryID.EQ(FilmCategory.CategoryID)),
|
||||
).WHERE(
|
||||
Language.Name.EQ(String("English")). // note every column has type.
|
||||
AND(Category.Name.NOT_EQ(String("Action"))). // String column Language.Name and Category.Name can be compared only with string columns and expressions
|
||||
AND(Film.Length.GT(Int(180))), // Film.Length is integer column and can be compared only with integer columns and expressions
|
||||
Language.Name.EQ(String("English")).
|
||||
AND(Category.Name.NOT_EQ(String("Action"))).
|
||||
AND(Film.Length.GT(Int(180))),
|
||||
).ORDER_BY(
|
||||
Actor.ActorID.ASC(),
|
||||
Film.FilmID.ASC(),
|
||||
|
|
@ -70,6 +72,8 @@ func main() {
|
|||
jsonText, _ := json.MarshalIndent(dest, "", "\t")
|
||||
fmt.Println(string(jsonText))
|
||||
|
||||
// New Destination
|
||||
|
||||
var dest2 []struct {
|
||||
model.Category
|
||||
|
||||
|
|
|
|||
|
|
@ -36,8 +36,6 @@ func Query(db DB, context context.Context, query string, args []interface{}, des
|
|||
return err
|
||||
}
|
||||
|
||||
fmt.Println("TEMP SLICE SIZE: ", tempSliceValue.Len())
|
||||
|
||||
if tempSliceValue.Len() == 0 {
|
||||
return nil
|
||||
}
|
||||
|
|
@ -89,8 +87,6 @@ func queryToSlice(db DB, ctx context.Context, query string, args []interface{},
|
|||
return nil
|
||||
}
|
||||
|
||||
groupTime := time.Duration(0)
|
||||
|
||||
slicePtrValue := reflect.ValueOf(slicePtr)
|
||||
|
||||
for rows.Next() {
|
||||
|
|
@ -102,19 +98,13 @@ func queryToSlice(db DB, ctx context.Context, query string, args []interface{},
|
|||
|
||||
scanContext.rowNum++
|
||||
|
||||
begin := time.Now()
|
||||
|
||||
_, err = mapRowToSlice(scanContext, "", slicePtrValue, nil)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
groupTime += time.Now().Sub(begin)
|
||||
}
|
||||
|
||||
fmt.Println(groupTime.String())
|
||||
|
||||
err = rows.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -126,8 +116,6 @@ func queryToSlice(db DB, ctx context.Context, query string, args []interface{},
|
|||
return err
|
||||
}
|
||||
|
||||
fmt.Println(strconv.Itoa(scanContext.rowNum) + " ROW(S) PROCESSED")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -596,7 +584,6 @@ func newScanType(columnType *sql.ColumnType) reflect.Type {
|
|||
case "DATE", "TIMESTAMP", "TIMESTAMPTZ", "TIME", "TIMETZ":
|
||||
return nullTimeType
|
||||
default:
|
||||
fmt.Println("Unknown column database type " + columnType.DatabaseTypeName() + " using string as default.")
|
||||
return nullStringType
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ func (c ColumnInfo) SqlBuilderColumnType() string {
|
|||
case "real", "numeric", "decimal", "double precision":
|
||||
return "Float"
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
|
@ -67,7 +67,7 @@ func (c ColumnInfo) GoBaseType() string {
|
|||
case "uuid":
|
||||
return "uuid.UUID"
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,5 +3,3 @@ package jet
|
|||
type groupByClause interface {
|
||||
serializeForGroupBy(statement statementType, out *sqlBuilder) error
|
||||
}
|
||||
|
||||
// TODO: GROUPING SETS, CUBE, and ROLLUP
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package jet
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gotest.tools/assert"
|
||||
"testing"
|
||||
)
|
||||
|
|
@ -183,7 +182,6 @@ func TestUnionInUnion(t *testing.T) {
|
|||
UNION_ALL(table1.SELECT(table1Col1), table2.SELECT(table2Col3)),
|
||||
)
|
||||
|
||||
fmt.Println(query.Sql())
|
||||
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
|
||||
|
||||
import (
|
||||
|
|
@ -30,7 +28,6 @@ type readableTable interface {
|
|||
CROSS_JOIN(table ReadableTable) ReadableTable
|
||||
}
|
||||
|
||||
// The sql tableName write interface.
|
||||
type writableTable interface {
|
||||
INSERT(columns ...column) InsertStatement
|
||||
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 {
|
||||
return t.schemaName
|
||||
}
|
||||
|
||||
// Returns the tableName's name in the database
|
||||
func (t *tableImpl) TableName() string {
|
||||
return t.name
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "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/table"
|
||||
|
|
@ -14,8 +13,6 @@ func TestAllTypesSelect(t *testing.T) {
|
|||
dest := []model.AllTypes{}
|
||||
|
||||
err := AllTypes.SELECT(AllTypes.AllColumns).Query(db, &dest)
|
||||
|
||||
fmt.Println(err)
|
||||
assert.NilError(t, err)
|
||||
|
||||
assert.DeepEqual(t, dest[0], allTypesRow0)
|
||||
|
|
|
|||
|
|
@ -188,18 +188,26 @@ VALUES
|
|||
|
||||
-- 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;
|
||||
|
||||
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 --------------
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/northwind/model"
|
||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/northwind/table"
|
||||
"gotest.tools/assert"
|
||||
|
|
@ -61,8 +60,6 @@ func TestNorthwindJoinEverything(t *testing.T) {
|
|||
err := stmt.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
|
||||
fmt.Println(len(dest))
|
||||
|
||||
//jsonSave("./testdata/northwind-all.json", dest)
|
||||
assertJsonFile(t, "./testdata/northwind-all.json", dest)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
. "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/table"
|
||||
|
|
@ -35,30 +33,41 @@ func TestEnumType(t *testing.T) {
|
|||
query := Person.
|
||||
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{}
|
||||
|
||||
err = query.Query(db, &result)
|
||||
err := query.Query(db, &result)
|
||||
|
||||
assert.NilError(t, err)
|
||||
//spew.Dump(result)
|
||||
|
||||
type Person struct {
|
||||
Name string
|
||||
CurrentMood model.Mood
|
||||
assertJson(t, result, `
|
||||
[
|
||||
{
|
||||
"PersonID": "b68dbff4-a87d-11e9-a7f2-98ded00c39c6",
|
||||
"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) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
. "github.com/go-jet/jet"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/model"
|
||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/table"
|
||||
|
|
@ -171,8 +169,6 @@ func TestScanToStruct(t *testing.T) {
|
|||
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. `)
|
||||
|
||||
fmt.Println(err)
|
||||
})
|
||||
|
||||
t.Run("type mismatch scanner type", func(t *testing.T) {
|
||||
|
|
@ -455,10 +451,6 @@ func TestScanToSlice(t *testing.T) {
|
|||
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
fmt.Println(query.DebugSql())
|
||||
|
||||
spew.Dump(dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.DeepEqual(t, dest.Film, film1)
|
||||
assert.DeepEqual(t, dest.IDs, []int32{1, 2, 3, 4, 5, 6, 7, 8})
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "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/table"
|
||||
|
|
@ -17,8 +16,6 @@ func TestUpdateValues(t *testing.T) {
|
|||
SET("Bong", "http://bong.com").
|
||||
WHERE(Link.Name.EQ(String("Bing")))
|
||||
|
||||
fmt.Println(query.DebugSql())
|
||||
|
||||
var expectedSql = `
|
||||
UPDATE test_sample.link
|
||||
SET (name, url) = ('Bong', 'http://bong.com')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue