From 2e5cea85d4e0887ce055c6bf7dfb43f120dc53fc Mon Sep 17 00:00:00 2001 From: yad <203647695+yad-unext@users.noreply.github.com> Date: Fri, 30 May 2025 21:54:04 +0900 Subject: [PATCH] add ToMigrationStatements helper --- .../TestToMigrationStatements/list.json | 4 ++++ database/spanner/ddl/ddl_test.go | 16 ++++++++++++++++ database/spanner/ddl/format.go | 10 ++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 database/spanner/ddl/.got/snapshots/TestToMigrationStatements/list.json diff --git a/database/spanner/ddl/.got/snapshots/TestToMigrationStatements/list.json b/database/spanner/ddl/.got/snapshots/TestToMigrationStatements/list.json new file mode 100644 index 000000000..28ae1300f --- /dev/null +++ b/database/spanner/ddl/.got/snapshots/TestToMigrationStatements/list.json @@ -0,0 +1,4 @@ +[ + "CREATE TABLE test (id INT64)", + "CREATE PROPERTY GRAPH SocialGraph NODE TABLES (Person) EDGE TABLES (Knows)" +] diff --git a/database/spanner/ddl/ddl_test.go b/database/spanner/ddl/ddl_test.go index decd7839b..66e118efe 100644 --- a/database/spanner/ddl/ddl_test.go +++ b/database/spanner/ddl/ddl_test.go @@ -30,3 +30,19 @@ func TestBasic(t *testing.T) { g.Snapshot("ddl-string", ddl.String()) } + +func TestToMigrationStatements(t *testing.T) { + g := got.T(t) + + list, err := ToMigrationStatements("", ` + -- Comment + CREATE TABLE test(id INT64); + + CREATE PROPERTY GRAPH SocialGraph + NODE TABLES (Person) + EDGE TABLES (Knows); + `) + g.E(err) + + g.Snapshot("list", list) +} diff --git a/database/spanner/ddl/format.go b/database/spanner/ddl/format.go index dfc8a7bbc..111c83336 100644 --- a/database/spanner/ddl/format.go +++ b/database/spanner/ddl/format.go @@ -6,12 +6,18 @@ import ( ) func ToMigrationStatements(path, ddl string) ([]string, error) { - _, err := parser.ParseString(path, ddl) + parsed, err := parser.ParseString(path, ddl) if err != nil { return nil, fmt.Errorf("failed to parse DDL: %w", err) } - return nil, nil + list := []string{} + + for _, statement := range parsed.Statements { + list = append(list, strings.TrimRight(statement.String(), ";")) + } + + return list, nil } func (d *SpannerDDL) String() string {