From daf16b491c21e5541b573c72abba59c663d6a010 Mon Sep 17 00:00:00 2001 From: liangfujian <50279811+liangfujian@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:51:22 +0800 Subject: [PATCH 1/5] add savePoint --- .../client/golang/templates/queryx.gotmpl | 15 +++++++++++ internal/integration/client_test.go | 25 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/generator/client/golang/templates/queryx.gotmpl b/generator/client/golang/templates/queryx.gotmpl index ddd1d0f2..bd7fe8c1 100644 --- a/generator/client/golang/templates/queryx.gotmpl +++ b/generator/client/golang/templates/queryx.gotmpl @@ -107,6 +107,21 @@ func (tx *Tx) Rollback() error { return tx.tx.Rollback() } +func (tx *Tx) SavePoint (sp string) error { + _, err := tx.tx.Exec(fmt.Sprintf("SAVEPOINT %s", sp)) + return err +} + +func (tx *Tx) ReleasePoint (rp string) error { + _, err := tx.tx.Exec(fmt.Sprintf("RELEASE SAVEPOINT %s",rp)) + return err +} + +func (tx *Tx) RollbackTo(rt string) error { + _, err := tx.tx.Exec(fmt.Sprintf("ROLLBACK TO %s", rt)) + return err +} + {{- range $m := $.client.Models }} func (tx *Tx) Query{{ $m.Name }}() *{{ $m.Name }}Query { diff --git a/internal/integration/client_test.go b/internal/integration/client_test.go index 2e3474e6..1a7da1be 100644 --- a/internal/integration/client_test.go +++ b/internal/integration/client_test.go @@ -429,6 +429,31 @@ func TestTransaction(t *testing.T) { require.Equal(t, "tag1-updated", tag1.Name.Val) } +func TestSavePoint(t *testing.T) { + tx, _ := c.Tx() + var tagPoint = "sp_point" + + tx.QueryTag().Create(tx.ChangeTag().SetName("tagPoint1")) + + err := tx.SavePoint(tagPoint) + require.NoError(t, err) + + tx.QueryTag().Create(tx.ChangeTag().SetName("tagPoint2")) + err = tx.RollbackTo(tagPoint) + require.NoError(t, err) + + exists, err := tx.QueryTag().Where(tx.TagName.EQ("tagPoint1")).Exists() + require.NoError(t, err) + require.Equal(t, true, exists) + exists, err = tx.QueryTag().Where(tx.TagName.EQ("tagPoint2")).Exists() + require.NoError(t, err) + require.Equal(t, false, exists) + + err = tx.ReleasePoint(tagPoint) + require.NoError(t, err) + tx.Commit() +} + func TestChangeJSON(t *testing.T) { s := `{"name":"user name","isAdmin":false}` From 351944fb7e2beff88e3730000688704b368a4108 Mon Sep 17 00:00:00 2001 From: liangfujian <50279811+liangfujian@users.noreply.github.com> Date: Fri, 8 Sep 2023 17:48:55 +0800 Subject: [PATCH 2/5] =?UTF-8?q?ts=E6=94=AF=E6=8C=81savepoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/queryx/adapter.mysql.ts | 11 +++++++++++ .../templates/queryx/adapter.postgresql.ts | 12 ++++++++++++ .../templates/queryx/adapter.sqlite.ts | 11 +++++++++++ .../typescript/templates/queryx/client.tstmpl | 12 ++++++++++++ internal/integration/client.test.ts | 18 ++++++++++++++++++ 5 files changed, 64 insertions(+) diff --git a/generator/client/typescript/templates/queryx/adapter.mysql.ts b/generator/client/typescript/templates/queryx/adapter.mysql.ts index caf31ad1..ed872a33 100644 --- a/generator/client/typescript/templates/queryx/adapter.mysql.ts +++ b/generator/client/typescript/templates/queryx/adapter.mysql.ts @@ -48,6 +48,17 @@ export class Adapter { async rollback() { await this.db.query("ROLLBACK"); } + + async savePoint(sp: string){ + await this.exec(`SAVEPOINT ${sp}`); + } + async releasePoint(rp: string){ + await this.exec(`RELEASE SAVEPOINT ${rp}`); + } + + async rollbackTo(rt: string){ + await this.exec(`ROLLBACK TO ${rt}`); + } } export function rebind(query: string, args?: T) {} diff --git a/generator/client/typescript/templates/queryx/adapter.postgresql.ts b/generator/client/typescript/templates/queryx/adapter.postgresql.ts index 72a4aa33..4911eb45 100644 --- a/generator/client/typescript/templates/queryx/adapter.postgresql.ts +++ b/generator/client/typescript/templates/queryx/adapter.postgresql.ts @@ -53,6 +53,18 @@ export class Adapter { async rollback() { await this.exec("ROLLBACK"); } + + async savePoint(sp: string){ + await this.exec(`SAVEPOINT ${sp}`); + } + async releasePoint(rp: string){ + await this.exec(`RELEASE SAVEPOINT ${rp}`); + } + + async rollbackTo(rt: string){ + await this.exec(`ROLLBACK TO ${rt}`); + } + } export function rebind(query: string, args?: T) { diff --git a/generator/client/typescript/templates/queryx/adapter.sqlite.ts b/generator/client/typescript/templates/queryx/adapter.sqlite.ts index cf43ea53..8f1ce8dc 100644 --- a/generator/client/typescript/templates/queryx/adapter.sqlite.ts +++ b/generator/client/typescript/templates/queryx/adapter.sqlite.ts @@ -44,6 +44,17 @@ export class Adapter { async rollback() { await this.exec("ROLLBACK"); } + + async savePoint(sp: string){ + await this.exec(`SAVEPOINT ${sp}`); + } + async releasePoint(rp: string){ + await this.exec(`RELEASE SAVEPOINT ${rp}`); + } + + async rollbackTo(rt: string){ + await this.exec(`ROLLBACK TO ${rt}`); + } } export function rebind(query: string, args?: T) { diff --git a/generator/client/typescript/templates/queryx/client.tstmpl b/generator/client/typescript/templates/queryx/client.tstmpl index f06e1fb6..9e564184 100644 --- a/generator/client/typescript/templates/queryx/client.tstmpl +++ b/generator/client/typescript/templates/queryx/client.tstmpl @@ -75,6 +75,18 @@ export class Tx extends QXClient { rollback() { return this.adapter.rollback(); } + + savePoint(sp: string){ + return this.adapter.savePoint(sp) + } + + releasePoint(rp: string){ + return this.adapter.releasePoint(rp) + } + + rollbackTo(rt: string){ + return this.adapter.rollbackTo(rt) + } } export const newClient = () => { diff --git a/internal/integration/client.test.ts b/internal/integration/client.test.ts index b6a4a56f..70032e9b 100644 --- a/internal/integration/client.test.ts +++ b/internal/integration/client.test.ts @@ -345,6 +345,24 @@ test("transaction", async () => { expect(tag1.name).toEqual("tag1-updated"); }); + +test("savepoint", async () => { + let tx = await c.tx(); + let tagPoint = "sp_point" + + await tx.queryTag().create({name:"tagPoint1"}) + await tx.savePoint(tagPoint) + + await tx.queryTag().create({name: "tagPoint2"}) + await tx.rollbackTo(tagPoint) + + await tx.queryTag().where(tx.tagName.eq("tagPoint1")).exists() + await tx.queryTag().where(tx.tagName.eq("tagPoint2")).exists() + + await tx.releasePoint(tagPoint) + await tx.commit() +}); + test("changeJSON", async () => { let userChange = new UserChange({ name: "user name", From 8a9c1443979f8f52ee0bd5e06c3fa866f697420f Mon Sep 17 00:00:00 2001 From: liangfujian <50279811+liangfujian@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:14:23 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=92=A4=E9=94=80ts=E5=AF=B9savepoint?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/queryx/adapter.mysql.ts | 11 -------- .../templates/queryx/adapter.postgresql.ts | 12 --------- .../templates/queryx/adapter.sqlite.ts | 11 -------- .../typescript/templates/queryx/client.tstmpl | 12 --------- internal/integration/client_test.go | 25 ------------------- 5 files changed, 71 deletions(-) diff --git a/generator/client/typescript/templates/queryx/adapter.mysql.ts b/generator/client/typescript/templates/queryx/adapter.mysql.ts index ed872a33..caf31ad1 100644 --- a/generator/client/typescript/templates/queryx/adapter.mysql.ts +++ b/generator/client/typescript/templates/queryx/adapter.mysql.ts @@ -48,17 +48,6 @@ export class Adapter { async rollback() { await this.db.query("ROLLBACK"); } - - async savePoint(sp: string){ - await this.exec(`SAVEPOINT ${sp}`); - } - async releasePoint(rp: string){ - await this.exec(`RELEASE SAVEPOINT ${rp}`); - } - - async rollbackTo(rt: string){ - await this.exec(`ROLLBACK TO ${rt}`); - } } export function rebind(query: string, args?: T) {} diff --git a/generator/client/typescript/templates/queryx/adapter.postgresql.ts b/generator/client/typescript/templates/queryx/adapter.postgresql.ts index 4911eb45..72a4aa33 100644 --- a/generator/client/typescript/templates/queryx/adapter.postgresql.ts +++ b/generator/client/typescript/templates/queryx/adapter.postgresql.ts @@ -53,18 +53,6 @@ export class Adapter { async rollback() { await this.exec("ROLLBACK"); } - - async savePoint(sp: string){ - await this.exec(`SAVEPOINT ${sp}`); - } - async releasePoint(rp: string){ - await this.exec(`RELEASE SAVEPOINT ${rp}`); - } - - async rollbackTo(rt: string){ - await this.exec(`ROLLBACK TO ${rt}`); - } - } export function rebind(query: string, args?: T) { diff --git a/generator/client/typescript/templates/queryx/adapter.sqlite.ts b/generator/client/typescript/templates/queryx/adapter.sqlite.ts index 8f1ce8dc..cf43ea53 100644 --- a/generator/client/typescript/templates/queryx/adapter.sqlite.ts +++ b/generator/client/typescript/templates/queryx/adapter.sqlite.ts @@ -44,17 +44,6 @@ export class Adapter { async rollback() { await this.exec("ROLLBACK"); } - - async savePoint(sp: string){ - await this.exec(`SAVEPOINT ${sp}`); - } - async releasePoint(rp: string){ - await this.exec(`RELEASE SAVEPOINT ${rp}`); - } - - async rollbackTo(rt: string){ - await this.exec(`ROLLBACK TO ${rt}`); - } } export function rebind(query: string, args?: T) { diff --git a/generator/client/typescript/templates/queryx/client.tstmpl b/generator/client/typescript/templates/queryx/client.tstmpl index 9e564184..f06e1fb6 100644 --- a/generator/client/typescript/templates/queryx/client.tstmpl +++ b/generator/client/typescript/templates/queryx/client.tstmpl @@ -75,18 +75,6 @@ export class Tx extends QXClient { rollback() { return this.adapter.rollback(); } - - savePoint(sp: string){ - return this.adapter.savePoint(sp) - } - - releasePoint(rp: string){ - return this.adapter.releasePoint(rp) - } - - rollbackTo(rt: string){ - return this.adapter.rollbackTo(rt) - } } export const newClient = () => { diff --git a/internal/integration/client_test.go b/internal/integration/client_test.go index 1a7da1be..2e3474e6 100644 --- a/internal/integration/client_test.go +++ b/internal/integration/client_test.go @@ -429,31 +429,6 @@ func TestTransaction(t *testing.T) { require.Equal(t, "tag1-updated", tag1.Name.Val) } -func TestSavePoint(t *testing.T) { - tx, _ := c.Tx() - var tagPoint = "sp_point" - - tx.QueryTag().Create(tx.ChangeTag().SetName("tagPoint1")) - - err := tx.SavePoint(tagPoint) - require.NoError(t, err) - - tx.QueryTag().Create(tx.ChangeTag().SetName("tagPoint2")) - err = tx.RollbackTo(tagPoint) - require.NoError(t, err) - - exists, err := tx.QueryTag().Where(tx.TagName.EQ("tagPoint1")).Exists() - require.NoError(t, err) - require.Equal(t, true, exists) - exists, err = tx.QueryTag().Where(tx.TagName.EQ("tagPoint2")).Exists() - require.NoError(t, err) - require.Equal(t, false, exists) - - err = tx.ReleasePoint(tagPoint) - require.NoError(t, err) - tx.Commit() -} - func TestChangeJSON(t *testing.T) { s := `{"name":"user name","isAdmin":false}` From b8d147273785839713f98abe0e601cb731e10dac Mon Sep 17 00:00:00 2001 From: liangfujian <50279811+liangfujian@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:43:17 +0800 Subject: [PATCH 4/5] fix gitaction --- internal/integration/client.test.ts | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/internal/integration/client.test.ts b/internal/integration/client.test.ts index 70032e9b..b6a4a56f 100644 --- a/internal/integration/client.test.ts +++ b/internal/integration/client.test.ts @@ -345,24 +345,6 @@ test("transaction", async () => { expect(tag1.name).toEqual("tag1-updated"); }); - -test("savepoint", async () => { - let tx = await c.tx(); - let tagPoint = "sp_point" - - await tx.queryTag().create({name:"tagPoint1"}) - await tx.savePoint(tagPoint) - - await tx.queryTag().create({name: "tagPoint2"}) - await tx.rollbackTo(tagPoint) - - await tx.queryTag().where(tx.tagName.eq("tagPoint1")).exists() - await tx.queryTag().where(tx.tagName.eq("tagPoint2")).exists() - - await tx.releasePoint(tagPoint) - await tx.commit() -}); - test("changeJSON", async () => { let userChange = new UserChange({ name: "user name", From 154631e3b3327bb0b631e218058a87a132fc1cd8 Mon Sep 17 00:00:00 2001 From: liangfujian <50279811+liangfujian@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:44:35 +0800 Subject: [PATCH 5/5] fix gitaction --- internal/integration/client_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/internal/integration/client_test.go b/internal/integration/client_test.go index 2e3474e6..1a7da1be 100644 --- a/internal/integration/client_test.go +++ b/internal/integration/client_test.go @@ -429,6 +429,31 @@ func TestTransaction(t *testing.T) { require.Equal(t, "tag1-updated", tag1.Name.Val) } +func TestSavePoint(t *testing.T) { + tx, _ := c.Tx() + var tagPoint = "sp_point" + + tx.QueryTag().Create(tx.ChangeTag().SetName("tagPoint1")) + + err := tx.SavePoint(tagPoint) + require.NoError(t, err) + + tx.QueryTag().Create(tx.ChangeTag().SetName("tagPoint2")) + err = tx.RollbackTo(tagPoint) + require.NoError(t, err) + + exists, err := tx.QueryTag().Where(tx.TagName.EQ("tagPoint1")).Exists() + require.NoError(t, err) + require.Equal(t, true, exists) + exists, err = tx.QueryTag().Where(tx.TagName.EQ("tagPoint2")).Exists() + require.NoError(t, err) + require.Equal(t, false, exists) + + err = tx.ReleasePoint(tagPoint) + require.NoError(t, err) + tx.Commit() +} + func TestChangeJSON(t *testing.T) { s := `{"name":"user name","isAdmin":false}`