From 06fe81e0644b5971db2512299703570f0ad96ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Garcia?= Date: Tue, 16 Jan 2024 23:34:17 -0300 Subject: [PATCH] Update Patch to work with qualified table names --- ksql.go | 2 +- test_adapters.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/ksql.go b/ksql.go index 2628c64..2468823 100644 --- a/ksql.go +++ b/ksql.go @@ -899,7 +899,7 @@ func buildUpdateQuery( query = fmt.Sprintf( "UPDATE %s SET %s WHERE %s", - dialect.Escape(tableName), + tableName, strings.Join(setQuery, ", "), strings.Join(whereQuery, " AND "), ) diff --git a/test_adapters.go b/test_adapters.go index 2cdc613..76a9cd3 100644 --- a/test_adapters.go +++ b/test_adapters.go @@ -1636,6 +1636,40 @@ func PatchTest( tt.AssertEqual(t, result.Age, 42) }) + t.Run("should work even when ksql.NewTable receives a qualified table name", func(t *testing.T) { + c := newTestDB(db, dialect) + + u := user{ + Name: "Letícia", + } + _, err := db.ExecContext(ctx, `INSERT INTO users (name, age) VALUES ('Letícia', 0)`) + tt.AssertNoErr(t, err) + + err = getUserByName(db, dialect, &u, "Letícia") + tt.AssertNoErr(t, err) + tt.AssertNotEqual(t, u.ID, uint(0)) + + switch dialect.DriverName() { + case "postgres": + // public is the default schema name for postgres: + err = c.Patch(ctx, NewTable("public.users"), &user{ID: u.ID, Name: "Thayane"}) + case "sqlserver": + // dbo is the default schema name for sqlserver: + err = c.Patch(ctx, NewTable("dbo.users"), &user{ID: u.ID, Name: "Thayane"}) + case "sqlite3": + // main is the default schema name for sqlite: + err = c.Patch(ctx, NewTable("main.users"), &user{ID: u.ID, Name: "Thayane"}) + case "mysql": + err = c.Patch(ctx, NewTable("ksql.users"), &user{ID: u.ID, Name: "Thayane"}) + } + tt.AssertNoErr(t, err) + + var result user + err = getUserByID(c.db, c.dialect, &result, u.ID) + tt.AssertNoErr(t, err) + tt.AssertEqual(t, result.Name, "Thayane") + }) + t.Run("should return ErrRecordNotFound when asked to update an inexistent user", func(t *testing.T) { c := newTestDB(db, dialect)