Model sql tags.
This commit is contained in:
parent
367602757f
commit
c598978ba6
10 changed files with 110 additions and 67 deletions
Binary file not shown.
|
|
@ -142,11 +142,11 @@ VALUES (1, 1, 300, 300, 50000, 5000, 11.44, 11.44, 55.77, 55.77, 99.1, 99.1, 111
|
|||
DROP TABLE IF EXISTS test_sample.link;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS test_sample.link (
|
||||
ID serial PRIMARY KEY,
|
||||
url VARCHAR (255) NOT NULL,
|
||||
name VARCHAR (255) NOT NULL,
|
||||
description VARCHAR (255),
|
||||
rel VARCHAR (50)
|
||||
ID serial PRIMARY KEY,
|
||||
url VARCHAR (255) NOT NULL,
|
||||
name VARCHAR (255) NOT NULL,
|
||||
description VARCHAR (255),
|
||||
rel VARCHAR (50)
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -158,6 +158,7 @@ CREATE TABLE test_sample.employee (
|
|||
employee_id INT PRIMARY KEY,
|
||||
first_name VARCHAR (255) NOT NULL,
|
||||
last_name VARCHAR (255) NOT NULL,
|
||||
employment_date timestamp with time zone,
|
||||
manager_id INT,
|
||||
FOREIGN KEY (manager_id)
|
||||
REFERENCES test_sample.employee (employee_id)
|
||||
|
|
@ -167,17 +168,18 @@ INSERT INTO test_sample.employee (
|
|||
employee_id,
|
||||
first_name,
|
||||
last_name,
|
||||
employment_date,
|
||||
manager_id
|
||||
)
|
||||
VALUES
|
||||
(1, 'Windy', 'Hays', NULL),
|
||||
(2, 'Ava', 'Christensen', 1),
|
||||
(3, 'Hassan', 'Conner', 1),
|
||||
(4, 'Anna', 'Reeves', 2),
|
||||
(5, 'Sau', 'Norman', 2),
|
||||
(6, 'Kelsie', 'Hays', 3),
|
||||
(7, 'Tory', 'Goff', 3),
|
||||
(8, 'Salley', 'Lester', 3);
|
||||
(1, 'Windy', 'Hays', '1999-01-08 04:05:06.100 -8:00', NULL),
|
||||
(2, 'Ava', 'Christensen', '1999-01-08 04:05:06', 1),
|
||||
(3, 'Hassan', 'Conner', '1999-01-08 04:05:06', 1),
|
||||
(4, 'Anna', 'Reeves', '1999-01-08 04:05:06', 2),
|
||||
(5, 'Sau', 'Norman', '1999-01-08 04:05:06', 2),
|
||||
(6, 'Kelsie', 'Hays', '1999-01-08 04:05:06', 3),
|
||||
(7, 'Tory', 'Goff', '1999-01-08 04:05:06', 3),
|
||||
(8, 'Salley', 'Lester', '1999-01-08 04:05:06', 3);
|
||||
|
||||
|
||||
-- Person table ------------------
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ func TestGenerateModel(t *testing.T) {
|
|||
assert.Equal(t, reflect.TypeOf(actor.ActorID).String(), "int32")
|
||||
actorIDField, ok := reflect.TypeOf(actor).FieldByName("ActorID")
|
||||
assert.Assert(t, ok)
|
||||
assert.Equal(t, actorIDField.Tag.Get("sql"), "unique")
|
||||
assert.Equal(t, actorIDField.Tag.Get("sql"), "primary_key")
|
||||
assert.Equal(t, reflect.TypeOf(actor.FirstName).String(), "string")
|
||||
assert.Equal(t, reflect.TypeOf(actor.LastName).String(), "string")
|
||||
assert.Equal(t, reflect.TypeOf(actor.LastUpdate).String(), "time.Time")
|
||||
|
|
@ -46,12 +46,12 @@ func TestGenerateModel(t *testing.T) {
|
|||
assert.Equal(t, reflect.TypeOf(filmActor.FilmID).String(), "int16")
|
||||
filmIDField, ok := reflect.TypeOf(filmActor).FieldByName("FilmID")
|
||||
assert.Assert(t, ok)
|
||||
assert.Equal(t, filmIDField.Tag.Get("sql"), "unique")
|
||||
assert.Equal(t, filmIDField.Tag.Get("sql"), "primary_key")
|
||||
|
||||
assert.Equal(t, reflect.TypeOf(filmActor.ActorID).String(), "int16")
|
||||
actorIDField, ok = reflect.TypeOf(filmActor).FieldByName("ActorID")
|
||||
assert.Assert(t, ok)
|
||||
assert.Equal(t, filmIDField.Tag.Get("sql"), "unique")
|
||||
assert.Equal(t, filmIDField.Tag.Get("sql"), "primary_key")
|
||||
|
||||
staff := model.Staff{}
|
||||
|
||||
|
|
|
|||
|
|
@ -364,6 +364,8 @@ func TestScanToNestedStruct(t *testing.T) {
|
|||
SELECT(Inventory.AllColumns, Film.AllColumns, Store.AllColumns, Language.AllColumns).
|
||||
WHERE(Inventory.InventoryID.EQ(Int(1)))
|
||||
|
||||
type Language3 model.Language
|
||||
|
||||
dest := struct {
|
||||
model.Inventory
|
||||
Film struct {
|
||||
|
|
@ -371,7 +373,7 @@ func TestScanToNestedStruct(t *testing.T) {
|
|||
|
||||
Language model.Language
|
||||
Language2 *model.Language
|
||||
Language3 *model.Language `sqlbuilder:"language"`
|
||||
Language3 *Language3 `sql:"table:language"`
|
||||
Lang struct {
|
||||
model.Language
|
||||
}
|
||||
|
|
@ -392,7 +394,7 @@ func TestScanToNestedStruct(t *testing.T) {
|
|||
assert.DeepEqual(t, dest.Film.Lang.Language, language1)
|
||||
assert.DeepEqual(t, dest.Film.Lang2.Language, language1)
|
||||
assert.DeepEqual(t, dest.Film.Language2, (*model.Language)(nil))
|
||||
assert.DeepEqual(t, dest.Film.Language3, &language1)
|
||||
assert.DeepEqual(t, model.Language(*dest.Film.Language3), language1)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -443,7 +445,7 @@ func TestScanToSlice(t *testing.T) {
|
|||
t.Run("struct with slice of ints", func(t *testing.T) {
|
||||
var dest struct {
|
||||
model.Film
|
||||
IDs []int32 `sqlbuilder:"inventory.inventory_id"`
|
||||
IDs []int32 `sql:"table:inventory,column:inventory_id"`
|
||||
}
|
||||
|
||||
err := query.Query(db, &dest)
|
||||
|
|
@ -456,7 +458,7 @@ func TestScanToSlice(t *testing.T) {
|
|||
t.Run("slice of structs with slice of ints", func(t *testing.T) {
|
||||
var dest []struct {
|
||||
model.Film
|
||||
IDs []int32 `sqlbuilder:"inventory.inventory_id"`
|
||||
IDs []int32 `sql:"table:inventory,column:inventory_id"`
|
||||
}
|
||||
|
||||
err := query.Query(db, &dest)
|
||||
|
|
@ -472,7 +474,7 @@ func TestScanToSlice(t *testing.T) {
|
|||
t.Run("slice of structs with slice of pointer to ints", func(t *testing.T) {
|
||||
var dest []struct {
|
||||
model.Film
|
||||
IDs []*int32 `sqlbuilder:"inventory.inventory_id"`
|
||||
IDs []*int32 `sql:"table:inventory,column:inventory_id"`
|
||||
}
|
||||
|
||||
err := query.Query(db, &dest)
|
||||
|
|
|
|||
|
|
@ -495,10 +495,12 @@ func TestSelecSelfJoin1(t *testing.T) {
|
|||
SELECT employee.employee_id AS "employee.employee_id",
|
||||
employee.first_name AS "employee.first_name",
|
||||
employee.last_name AS "employee.last_name",
|
||||
employee.employment_date AS "employee.employment_date",
|
||||
employee.manager_id AS "employee.manager_id",
|
||||
manager.employee_id AS "manager.employee_id",
|
||||
manager.first_name AS "manager.first_name",
|
||||
manager.last_name AS "manager.last_name",
|
||||
manager.employment_date AS "manager.employment_date",
|
||||
manager.manager_id AS "manager.manager_id"
|
||||
FROM test_sample.employee
|
||||
LEFT JOIN test_sample.employee AS manager ON (manager.employee_id = employee.manager_id)
|
||||
|
|
@ -524,19 +526,21 @@ ORDER BY employee.employee_id;
|
|||
assert.NilError(t, err)
|
||||
assert.Equal(t, len(dest), 8)
|
||||
assert.DeepEqual(t, dest[0].Employee, model2.Employee{
|
||||
EmployeeID: 1,
|
||||
FirstName: "Windy",
|
||||
LastName: "Hays",
|
||||
ManagerID: nil,
|
||||
EmployeeID: 1,
|
||||
FirstName: "Windy",
|
||||
LastName: "Hays",
|
||||
EmploymentDate: timestampWithTimeZone("1999-01-08 13:05:06.1 +0100 CET", 1),
|
||||
ManagerID: nil,
|
||||
})
|
||||
|
||||
assert.Assert(t, dest[0].Manager == nil)
|
||||
|
||||
assert.DeepEqual(t, dest[7].Employee, model2.Employee{
|
||||
EmployeeID: 8,
|
||||
FirstName: "Salley",
|
||||
LastName: "Lester",
|
||||
ManagerID: int32Ptr(3),
|
||||
EmployeeID: 8,
|
||||
FirstName: "Salley",
|
||||
LastName: "Lester",
|
||||
EmploymentDate: timestampWithTimeZone("1999-01-08 04:05:06 +0100 CET", 1),
|
||||
ManagerID: int32Ptr(3),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue