WIP: Insert sets PK
WIP: Insert sets PK
This commit is contained in:
+41
-29
@@ -36,14 +36,14 @@ func TestSelectEmpty(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
|
||||
if err != nil {
|
||||
log.LogError("Select failure. %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
if len(res) > 0 {
|
||||
if len(selectExec.GetResult()) > 0 {
|
||||
log.LogError("Expected empty result.")
|
||||
t.Fail()
|
||||
return
|
||||
@@ -61,7 +61,7 @@ func TestInsertAndSelectSingle(t *testing.T) {
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndSelectSingle setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -76,16 +76,18 @@ func TestInsertAndSelectSingle(t *testing.T) {
|
||||
}
|
||||
|
||||
// WHEN
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndSelectSingle insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
|
||||
// THEN
|
||||
res := selectExec.GetResult()
|
||||
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndSelectSingle failure. %s", err)
|
||||
t.Fail()
|
||||
@@ -116,7 +118,7 @@ func TestInsertSelectWithCompositePk(t *testing.T) {
|
||||
|
||||
testObj := TestWithCompositePk{ID: 12, Name: "Test"}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertSelectWithCompositePk setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -131,14 +133,15 @@ func TestInsertSelectWithCompositePk(t *testing.T) {
|
||||
}
|
||||
|
||||
// WHEN
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertSelectWithCompositePk insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
res := selectExec.GetResult()
|
||||
|
||||
// THEN
|
||||
if err != nil {
|
||||
@@ -173,14 +176,14 @@ func TestInsertMultipleAndSelectWithParam(t *testing.T) {
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
testObjSecond := Test{Int64Field: 12, IntField: 54, StringField: "fdsa"}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertMultipleAndSelectWithParam setup failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
insertSecond, err := exec.NewInsert(orm, testObjSecond)
|
||||
insertSecond, err := exec.NewInsert(orm, &testObjSecond)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertMultipleAndSelectWithParam setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -196,21 +199,22 @@ func TestInsertMultipleAndSelectWithParam(t *testing.T) {
|
||||
|
||||
// WHEN
|
||||
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertMultipleAndSelectWithParam first insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
_, err = insertSecond.Execute(conn)
|
||||
err = insertSecond.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertMultipleAndSelectWithParam second insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
res := selectExec.GetResult()
|
||||
|
||||
// THEN
|
||||
if err != nil {
|
||||
@@ -243,7 +247,7 @@ func TestInsertAndUpdate(t *testing.T) {
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndUpdate setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -259,14 +263,16 @@ func TestInsertAndUpdate(t *testing.T) {
|
||||
|
||||
// WHEN
|
||||
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndUpdate insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
res := selectExec.GetResult()
|
||||
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndUpdate re-select failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -285,8 +291,9 @@ func TestInsertAndUpdate(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = updateExec.Execute(conn)
|
||||
res, selectErr := selectExec.Execute(conn)
|
||||
err = updateExec.Execute(conn)
|
||||
selectErr := selectExec.Execute(conn)
|
||||
res = selectExec.GetResult()
|
||||
|
||||
// THEN
|
||||
if err != nil {
|
||||
@@ -326,14 +333,14 @@ func TestInsertAndDelete(t *testing.T) {
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndDelete setup failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndDelete setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -347,7 +354,8 @@ func TestInsertAndDelete(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
selectRes, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
selectRes := selectExec.GetResult()
|
||||
|
||||
if err != nil {
|
||||
log.LogError("TestInsertAndDelete setup failed. %s", err)
|
||||
@@ -358,7 +366,7 @@ func TestInsertAndDelete(t *testing.T) {
|
||||
deleteExec, err := exec.NewDelete(orm, selectRes)
|
||||
|
||||
// WHEN
|
||||
_, err = deleteExec.Execute(conn)
|
||||
err = deleteExec.Execute(conn)
|
||||
|
||||
// THEN
|
||||
if err != nil {
|
||||
@@ -367,7 +375,9 @@ func TestInsertAndDelete(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
selectRes, err = selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
selectRes = selectExec.GetResult()
|
||||
|
||||
if len(selectRes) != 0 {
|
||||
log.LogError("TestInsertAndDelete test failed. Expected: 0, Actual: %s", len(selectRes))
|
||||
t.Fail()
|
||||
@@ -386,7 +396,7 @@ func TestBoolInsertAndSelectSingle(t *testing.T) {
|
||||
|
||||
testObj := TestWithBool{BoolField: true}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestBoolInsertAndSelectSingle setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -401,14 +411,15 @@ func TestBoolInsertAndSelectSingle(t *testing.T) {
|
||||
}
|
||||
|
||||
// WHEN
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestBoolInsertAndSelectSingle insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
res := selectExec.GetResult()
|
||||
|
||||
// THEN
|
||||
if err != nil {
|
||||
@@ -441,7 +452,7 @@ func TestTimeInsertAndSelectSingle(t *testing.T) {
|
||||
now := time.Now().UnixMilli()
|
||||
testObj := TestWithTime{TimeField: now}
|
||||
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestTimeInsertAndSelectSingle setup failed: %s", err)
|
||||
t.Fail()
|
||||
@@ -456,14 +467,15 @@ func TestTimeInsertAndSelectSingle(t *testing.T) {
|
||||
}
|
||||
|
||||
// WHEN
|
||||
_, err = insertExec.Execute(conn)
|
||||
err = insertExec.Execute(conn)
|
||||
if err != nil {
|
||||
log.LogError("TestTimeInsertAndSelectSingle insert failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
res, err := selectExec.Execute(conn)
|
||||
err = selectExec.Execute(conn)
|
||||
res := selectExec.GetResult()
|
||||
|
||||
// THEN
|
||||
if err != nil {
|
||||
|
||||
+51
-2
@@ -15,45 +15,94 @@ type Test struct {
|
||||
StringField string `sql:"nn"`
|
||||
}
|
||||
|
||||
func (t Test) IsInsertable() bool {
|
||||
func (t *Test) IsInsertable() bool {
|
||||
return t.ID == 0
|
||||
}
|
||||
|
||||
func (t *Test) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
}
|
||||
|
||||
type TestWithFk struct {
|
||||
ID int `sql:"pk"`
|
||||
TestID int `sql:"nn;fk=Test.ID"`
|
||||
}
|
||||
|
||||
func (t *TestWithFk) IsInsertable() bool {
|
||||
return t.ID == 0
|
||||
}
|
||||
|
||||
func (t *TestWithFk) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
}
|
||||
|
||||
type TestWithFkAndFkId struct {
|
||||
ID int `sql:"pk"`
|
||||
TestID int `sql:"nn;fk=Test.ID;fk_id=custom_fk"`
|
||||
}
|
||||
|
||||
func (t *TestWithFkAndFkId) IsInsertable() bool {
|
||||
return t.ID == 0
|
||||
}
|
||||
|
||||
func (t *TestWithFkAndFkId) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
}
|
||||
|
||||
type TestWithCompositePk struct {
|
||||
ID int `sql:"nn;pk;"`
|
||||
Name string `sql:"nn;pk"`
|
||||
}
|
||||
|
||||
func (t TestWithCompositePk) IsInsertable() bool {
|
||||
func (t *TestWithCompositePk) IsInsertable() bool {
|
||||
return t.ID == 0 && t.Name == ""
|
||||
}
|
||||
|
||||
func (t *TestWithCompositePk) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
t.Name = pks[1].(string)
|
||||
}
|
||||
|
||||
type TestWithCompositeFk struct {
|
||||
ID int `sql:"nn;pk"`
|
||||
CompositeFkId int `sql:"nn;fk=TestWithCompositePk.ID;"`
|
||||
CompositeFkName string `sql:"nn;fk=TestWithCompositePk.Name;"`
|
||||
}
|
||||
|
||||
func (t *TestWithCompositeFk) IsInsertable() bool {
|
||||
return t.ID == 0
|
||||
}
|
||||
|
||||
func (t *TestWithCompositeFk) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
}
|
||||
|
||||
type TestWithBool struct {
|
||||
ID int `sql:"pk"`
|
||||
BoolField bool `sql:"nn"`
|
||||
}
|
||||
|
||||
func (t *TestWithBool) IsInsertable() bool {
|
||||
return t.ID == 0
|
||||
}
|
||||
|
||||
func (t *TestWithBool) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
}
|
||||
|
||||
type TestWithTime struct {
|
||||
ID int `sql:"pk"`
|
||||
TimeField int64 `sql:"nn"`
|
||||
}
|
||||
|
||||
func (t *TestWithTime) IsInsertable() bool {
|
||||
return t.ID == 0
|
||||
}
|
||||
|
||||
func (t *TestWithTime) SetPk(pks ...any) {
|
||||
t.ID = pks[0].(int)
|
||||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
log.SetupLogs("Info")
|
||||
|
||||
|
||||
+13
-13
@@ -26,14 +26,14 @@ func TestRepoSelectAll(t *testing.T) {
|
||||
defer cleanUp("test.db", conn)
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestRepoSelectAll setup failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
_, err = insertExec.Execute(conn)
|
||||
repo := repository.NewRepository[Test](conn, orm)
|
||||
err = insertExec.Execute(conn)
|
||||
repo := repository.NewRepository[*Test](conn, orm)
|
||||
|
||||
// WHEN
|
||||
res := repo.SelectAll()
|
||||
@@ -52,14 +52,14 @@ func TestRepoSelectByPk(t *testing.T) {
|
||||
defer cleanUp("test.db", conn)
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestRepoSelectByPk setup failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
_, err = insertExec.Execute(conn)
|
||||
repo := repository.NewRepository[Test](conn, orm)
|
||||
err = insertExec.Execute(conn)
|
||||
repo := repository.NewRepository[*Test](conn, orm)
|
||||
|
||||
// WHEN
|
||||
res := repo.SelectByPk(1)
|
||||
@@ -78,14 +78,14 @@ func TestRepoSelectByCompundPk(t *testing.T) {
|
||||
defer cleanUp("test.db", conn)
|
||||
|
||||
testObj := TestWithCompositePk{ID: 42069, Name: "Test"}
|
||||
insertExec, err := exec.NewInsert(orm, testObj)
|
||||
insertExec, err := exec.NewInsert(orm, &testObj)
|
||||
if err != nil {
|
||||
log.LogError("TestRepoSelectByCompundPk setup failed: %s", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
_, err = insertExec.Execute(conn)
|
||||
repo := repository.NewRepository[TestWithCompositePk](conn, orm)
|
||||
err = insertExec.Execute(conn)
|
||||
repo := repository.NewRepository[*TestWithCompositePk](conn, orm)
|
||||
|
||||
// WHEN
|
||||
res := repo.SelectByPk(42069, "Test")
|
||||
@@ -104,10 +104,10 @@ func TestRepoSave(t *testing.T) {
|
||||
defer cleanUp("test.db", conn)
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
repo := repository.NewRepository[Test](conn, orm)
|
||||
repo := repository.NewRepository[*Test](conn, orm)
|
||||
|
||||
// WHEN
|
||||
repo.Save(testObj)
|
||||
repo.Save(&testObj)
|
||||
|
||||
// THEN
|
||||
res := repo.SelectByPk(1)
|
||||
@@ -124,9 +124,9 @@ func TestRepoDelete(t *testing.T) {
|
||||
defer cleanUp("test.db", conn)
|
||||
|
||||
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
|
||||
repo := repository.NewRepository[Test](conn, orm)
|
||||
repo := repository.NewRepository[*Test](conn, orm)
|
||||
|
||||
repo.Save(testObj)
|
||||
repo.Save(&testObj)
|
||||
|
||||
res := repo.SelectByPk(1)
|
||||
if res == nil {
|
||||
|
||||
Reference in New Issue
Block a user