dialect/sql/schema: expand fmt.Stringer args in WriteDriver (#3366)

This commit is contained in:
Ariel Mashraki
2023-03-04 23:05:16 +02:00
committed by GitHub
parent 3b7715b552
commit 7e2da46e09
2 changed files with 6 additions and 4 deletions

View File

@@ -222,6 +222,8 @@ func (w *WriteDriver) formatArg(v any) (string, error) {
return "{{ BINARY_VALUE }}", nil
case time.Time:
return "{{ TIME_VALUE }}", nil
case fmt.Stringer:
return "'" + strings.ReplaceAll(v.String(), "'", "''") + "'", nil
default:
return "{{ VALUE }}", nil
}

View File

@@ -13,12 +13,12 @@ import (
"testing"
"time"
"ariga.io/atlas/sql/migrate"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqljson"
"ariga.io/atlas/sql/migrate"
"github.com/google/uuid"
"github.com/stretchr/testify/require"
)
@@ -55,10 +55,10 @@ func TestWriteDriver(t *testing.T) {
b.Reset()
w = NewWriteDriver(dialect.Postgres, b)
query, args = sql.Dialect(dialect.Postgres).Update("users").Set("a", 1).Set("b", time.Now()).Query()
query, args = sql.Dialect(dialect.Postgres).Update("users").Set("id", uuid.Nil).Set("a", 1).Set("b", time.Now()).Query()
err = w.Exec(ctx, query, args, nil)
require.NoError(t, err)
require.Equal(t, `UPDATE "users" SET "a" = 1, "b" = {{ TIME_VALUE }};`+"\n", b.String())
require.Equal(t, `UPDATE "users" SET "id" = '00000000-0000-0000-0000-000000000000', "a" = 1, "b" = {{ TIME_VALUE }};`+"\n", b.String())
b.Reset()
err = w.Exec(ctx, `INSERT INTO "users" (name) VALUES("a8m") RETURNING id`, nil, nil)