diff --git a/internal/endtoend/testdata/ext_ltree/go/db.go b/internal/endtoend/testdata/array_in/go/db.go similarity index 100% rename from internal/endtoend/testdata/ext_ltree/go/db.go rename to internal/endtoend/testdata/array_in/go/db.go diff --git a/internal/endtoend/testdata/in/go/models.go b/internal/endtoend/testdata/array_in/go/models.go similarity index 100% rename from internal/endtoend/testdata/in/go/models.go rename to internal/endtoend/testdata/array_in/go/models.go diff --git a/internal/endtoend/testdata/in/go/query.sql.go b/internal/endtoend/testdata/array_in/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/in/go/query.sql.go rename to internal/endtoend/testdata/array_in/go/query.sql.go diff --git a/internal/endtoend/testdata/in/query.sql b/internal/endtoend/testdata/array_in/query.sql similarity index 100% rename from internal/endtoend/testdata/in/query.sql rename to internal/endtoend/testdata/array_in/query.sql diff --git a/internal/endtoend/testdata/ext_ltree/sqlc.json b/internal/endtoend/testdata/array_in/sqlc.json similarity index 100% rename from internal/endtoend/testdata/ext_ltree/sqlc.json rename to internal/endtoend/testdata/array_in/sqlc.json diff --git a/internal/endtoend/testdata/generate_series/go/db.go b/internal/endtoend/testdata/array_text/go/db.go similarity index 100% rename from internal/endtoend/testdata/generate_series/go/db.go rename to internal/endtoend/testdata/array_text/go/db.go diff --git a/internal/endtoend/testdata/text_array/go/models.go b/internal/endtoend/testdata/array_text/go/models.go similarity index 100% rename from internal/endtoend/testdata/text_array/go/models.go rename to internal/endtoend/testdata/array_text/go/models.go diff --git a/internal/endtoend/testdata/text_array/go/query.sql.go b/internal/endtoend/testdata/array_text/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/text_array/go/query.sql.go rename to internal/endtoend/testdata/array_text/go/query.sql.go diff --git a/internal/endtoend/testdata/text_array/query.sql b/internal/endtoend/testdata/array_text/query.sql similarity index 100% rename from internal/endtoend/testdata/text_array/query.sql rename to internal/endtoend/testdata/array_text/query.sql diff --git a/internal/endtoend/testdata/in/sqlc.json b/internal/endtoend/testdata/array_text/sqlc.json similarity index 100% rename from internal/endtoend/testdata/in/sqlc.json rename to internal/endtoend/testdata/array_text/sqlc.json diff --git a/internal/endtoend/testdata/in/go/db.go b/internal/endtoend/testdata/array_text_join/go/db.go similarity index 100% rename from internal/endtoend/testdata/in/go/db.go rename to internal/endtoend/testdata/array_text_join/go/db.go diff --git a/internal/endtoend/testdata/join_text_array/go/models.go b/internal/endtoend/testdata/array_text_join/go/models.go similarity index 100% rename from internal/endtoend/testdata/join_text_array/go/models.go rename to internal/endtoend/testdata/array_text_join/go/models.go diff --git a/internal/endtoend/testdata/join_text_array/go/query.sql.go b/internal/endtoend/testdata/array_text_join/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/join_text_array/go/query.sql.go rename to internal/endtoend/testdata/array_text_join/go/query.sql.go diff --git a/internal/endtoend/testdata/join_text_array/query.sql b/internal/endtoend/testdata/array_text_join/query.sql similarity index 100% rename from internal/endtoend/testdata/join_text_array/query.sql rename to internal/endtoend/testdata/array_text_join/query.sql diff --git a/internal/endtoend/testdata/join_text_array/sqlc.json b/internal/endtoend/testdata/array_text_join/sqlc.json similarity index 100% rename from internal/endtoend/testdata/join_text_array/sqlc.json rename to internal/endtoend/testdata/array_text_join/sqlc.json diff --git a/internal/endtoend/testdata/dolphin_errors/query/funcs.sql b/internal/endtoend/testdata/dolphin_errors/query/funcs.sql deleted file mode 100644 index 46c31a709c..0000000000 --- a/internal/endtoend/testdata/dolphin_errors/query/funcs.sql +++ /dev/null @@ -1,8 +0,0 @@ -/* name: WrongFunc :one */ -select id, first_name from users where id = SQLC_ARGH(target_id); - -/* name: InvalidName :one */ -select id, first_name from users where id = SQLC_ARG(SQLC_ARG(target_id)); - -/* name: InvalidVaue :one */ -select id, first_name from users where id = SQLC_ARG(?); diff --git a/internal/endtoend/testdata/dolphin_errors/schema.sql b/internal/endtoend/testdata/dolphin_errors/schema.sql deleted file mode 100644 index 191528716f..0000000000 --- a/internal/endtoend/testdata/dolphin_errors/schema.sql +++ /dev/null @@ -1,15 +0,0 @@ -CREATE TABLE users ( - id integer NOT NULL AUTO_INCREMENT PRIMARY KEY, - first_name varchar(255) NOT NULL, - last_name varchar(255), - age integer NOT NULL, - job_status ENUM('APPLIED', 'PENDING', 'ACCEPTED', 'REJECTED') NOT NULL -) ENGINE=InnoDB; - -CREATE TABLE orders ( - id integer NOT NULL AUTO_INCREMENT PRIMARY KEY, - price DECIMAL(13, 4) NOT NULL, - user_id integer NOT NULL -) ENGINE=InnoDB; - - diff --git a/internal/endtoend/testdata/join_text_array/go/db.go b/internal/endtoend/testdata/join_from/mysql/go/db.go similarity index 100% rename from internal/endtoend/testdata/join_text_array/go/db.go rename to internal/endtoend/testdata/join_from/mysql/go/db.go diff --git a/internal/endtoend/testdata/multifrom/go/models.go b/internal/endtoend/testdata/join_from/mysql/go/models.go similarity index 100% rename from internal/endtoend/testdata/multifrom/go/models.go rename to internal/endtoend/testdata/join_from/mysql/go/models.go diff --git a/internal/endtoend/testdata/join_from/mysql/go/query.sql.go b/internal/endtoend/testdata/join_from/mysql/go/query.sql.go new file mode 100644 index 0000000000..92b7b86b54 --- /dev/null +++ b/internal/endtoend/testdata/join_from/mysql/go/query.sql.go @@ -0,0 +1,35 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const multiFrom = `-- name: MultiFrom :many +SELECT email FROM bar, foo WHERE login = ? +` + +func (q *Queries) MultiFrom(ctx context.Context, login string) ([]string, error) { + rows, err := q.db.QueryContext(ctx, multiFrom, login) + if err != nil { + return nil, err + } + defer rows.Close() + var items []string + for rows.Next() { + var email string + if err := rows.Scan(&email); err != nil { + return nil, err + } + items = append(items, email) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/endtoend/testdata/join_from/mysql/query.sql b/internal/endtoend/testdata/join_from/mysql/query.sql new file mode 100644 index 0000000000..588d859578 --- /dev/null +++ b/internal/endtoend/testdata/join_from/mysql/query.sql @@ -0,0 +1,5 @@ +CREATE TABLE foo (email text not null); +CREATE TABLE bar (login text not null); + +-- name: MultiFrom :many +SELECT email FROM bar, foo WHERE login = ?; diff --git a/internal/endtoend/testdata/two_joins/sqlc.json b/internal/endtoend/testdata/join_from/mysql/sqlc.json similarity index 84% rename from internal/endtoend/testdata/two_joins/sqlc.json rename to internal/endtoend/testdata/join_from/mysql/sqlc.json index ac7c2ed829..20b7096718 100644 --- a/internal/endtoend/testdata/two_joins/sqlc.json +++ b/internal/endtoend/testdata/join_from/mysql/sqlc.json @@ -3,6 +3,7 @@ "packages": [ { "path": "go", + "engine": "mysql:beta", "name": "querytest", "schema": "query.sql", "queries": "query.sql" diff --git a/internal/endtoend/testdata/json/go/db.go b/internal/endtoend/testdata/join_from/postgresql/go/db.go similarity index 100% rename from internal/endtoend/testdata/json/go/db.go rename to internal/endtoend/testdata/join_from/postgresql/go/db.go diff --git a/internal/endtoend/testdata/join_from/postgresql/go/models.go b/internal/endtoend/testdata/join_from/postgresql/go/models.go new file mode 100644 index 0000000000..c71c6a9097 --- /dev/null +++ b/internal/endtoend/testdata/join_from/postgresql/go/models.go @@ -0,0 +1,13 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type Bar struct { + Login string +} + +type Foo struct { + Email string +} diff --git a/internal/endtoend/testdata/multifrom/go/query.sql.go b/internal/endtoend/testdata/join_from/postgresql/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/multifrom/go/query.sql.go rename to internal/endtoend/testdata/join_from/postgresql/go/query.sql.go diff --git a/internal/endtoend/testdata/multifrom/query.sql b/internal/endtoend/testdata/join_from/postgresql/query.sql similarity index 100% rename from internal/endtoend/testdata/multifrom/query.sql rename to internal/endtoend/testdata/join_from/postgresql/query.sql diff --git a/internal/endtoend/testdata/table_name/sqlc.json b/internal/endtoend/testdata/join_from/postgresql/sqlc.json similarity index 84% rename from internal/endtoend/testdata/table_name/sqlc.json rename to internal/endtoend/testdata/join_from/postgresql/sqlc.json index ac7c2ed829..c72b6132d5 100644 --- a/internal/endtoend/testdata/table_name/sqlc.json +++ b/internal/endtoend/testdata/join_from/postgresql/sqlc.json @@ -3,6 +3,7 @@ "packages": [ { "path": "go", + "engine": "postgresql", "name": "querytest", "schema": "query.sql", "queries": "query.sql" diff --git a/internal/endtoend/testdata/multifrom/go/db.go b/internal/endtoend/testdata/join_table_name/mysql/go/db.go similarity index 100% rename from internal/endtoend/testdata/multifrom/go/db.go rename to internal/endtoend/testdata/join_table_name/mysql/go/db.go diff --git a/internal/endtoend/testdata/join_table_name/mysql/go/models.go b/internal/endtoend/testdata/join_table_name/mysql/go/models.go new file mode 100644 index 0000000000..6d6345bfdf --- /dev/null +++ b/internal/endtoend/testdata/join_table_name/mysql/go/models.go @@ -0,0 +1,14 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type Bar struct { + ID int64 +} + +type Foo struct { + ID int64 + Bar int64 +} diff --git a/internal/endtoend/testdata/join_table_name/mysql/go/query.sql.go b/internal/endtoend/testdata/join_table_name/mysql/go/query.sql.go new file mode 100644 index 0000000000..2f49770ee4 --- /dev/null +++ b/internal/endtoend/testdata/join_table_name/mysql/go/query.sql.go @@ -0,0 +1,27 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const tableName = `-- name: TableName :one +SELECT foo.id +FROM foo +JOIN bar ON foo.bar = bar.id +WHERE bar.id = ? AND foo.id = ? +` + +type TableNameParams struct { + ID int64 + ID_2 int64 +} + +func (q *Queries) TableName(ctx context.Context, arg TableNameParams) (int64, error) { + row := q.db.QueryRowContext(ctx, tableName, arg.ID, arg.ID_2) + var id int64 + err := row.Scan(&id) + return id, err +} diff --git a/internal/endtoend/testdata/join_table_name/mysql/query.sql b/internal/endtoend/testdata/join_table_name/mysql/query.sql new file mode 100644 index 0000000000..2196ed2375 --- /dev/null +++ b/internal/endtoend/testdata/join_table_name/mysql/query.sql @@ -0,0 +1,8 @@ +CREATE TABLE bar (id serial not null); +CREATE TABLE foo (id serial not null, bar serial references bar(id)); + +-- name: TableName :one +SELECT foo.id +FROM foo +JOIN bar ON foo.bar = bar.id +WHERE bar.id = ? AND foo.id = ?; diff --git a/internal/endtoend/testdata/multifrom/sqlc.json b/internal/endtoend/testdata/join_table_name/mysql/sqlc.json similarity index 84% rename from internal/endtoend/testdata/multifrom/sqlc.json rename to internal/endtoend/testdata/join_table_name/mysql/sqlc.json index ac7c2ed829..20b7096718 100644 --- a/internal/endtoend/testdata/multifrom/sqlc.json +++ b/internal/endtoend/testdata/join_table_name/mysql/sqlc.json @@ -3,6 +3,7 @@ "packages": [ { "path": "go", + "engine": "mysql:beta", "name": "querytest", "schema": "query.sql", "queries": "query.sql" diff --git a/internal/endtoend/testdata/table_name/go/db.go b/internal/endtoend/testdata/join_table_name/postgresql/go/db.go similarity index 100% rename from internal/endtoend/testdata/table_name/go/db.go rename to internal/endtoend/testdata/join_table_name/postgresql/go/db.go diff --git a/internal/endtoend/testdata/table_name/go/models.go b/internal/endtoend/testdata/join_table_name/postgresql/go/models.go similarity index 100% rename from internal/endtoend/testdata/table_name/go/models.go rename to internal/endtoend/testdata/join_table_name/postgresql/go/models.go diff --git a/internal/endtoend/testdata/table_name/go/query.sql.go b/internal/endtoend/testdata/join_table_name/postgresql/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/table_name/go/query.sql.go rename to internal/endtoend/testdata/join_table_name/postgresql/go/query.sql.go diff --git a/internal/endtoend/testdata/table_name/query.sql b/internal/endtoend/testdata/join_table_name/postgresql/query.sql similarity index 100% rename from internal/endtoend/testdata/table_name/query.sql rename to internal/endtoend/testdata/join_table_name/postgresql/query.sql diff --git a/internal/endtoend/testdata/text_array/sqlc.json b/internal/endtoend/testdata/join_table_name/postgresql/sqlc.json similarity index 84% rename from internal/endtoend/testdata/text_array/sqlc.json rename to internal/endtoend/testdata/join_table_name/postgresql/sqlc.json index ac7c2ed829..c72b6132d5 100644 --- a/internal/endtoend/testdata/text_array/sqlc.json +++ b/internal/endtoend/testdata/join_table_name/postgresql/sqlc.json @@ -3,6 +3,7 @@ "packages": [ { "path": "go", + "engine": "postgresql", "name": "querytest", "schema": "query.sql", "queries": "query.sql" diff --git a/internal/endtoend/testdata/text_array/go/db.go b/internal/endtoend/testdata/join_two_tables/mysql/go/db.go similarity index 100% rename from internal/endtoend/testdata/text_array/go/db.go rename to internal/endtoend/testdata/join_two_tables/mysql/go/db.go diff --git a/internal/endtoend/testdata/join_two_tables/mysql/go/models.go b/internal/endtoend/testdata/join_two_tables/mysql/go/models.go new file mode 100644 index 0000000000..70f10f712d --- /dev/null +++ b/internal/endtoend/testdata/join_two_tables/mysql/go/models.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type Bar struct { + ID int64 +} + +type Baz struct { + ID int64 +} + +type Foo struct { + BarID int64 + BazID int64 +} diff --git a/internal/endtoend/testdata/two_joins/go/query.sql.go b/internal/endtoend/testdata/join_two_tables/mysql/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/two_joins/go/query.sql.go rename to internal/endtoend/testdata/join_two_tables/mysql/go/query.sql.go diff --git a/internal/endtoend/testdata/two_joins/query.sql b/internal/endtoend/testdata/join_two_tables/mysql/query.sql similarity index 100% rename from internal/endtoend/testdata/two_joins/query.sql rename to internal/endtoend/testdata/join_two_tables/mysql/query.sql diff --git a/internal/endtoend/testdata/join_two_tables/mysql/sqlc.json b/internal/endtoend/testdata/join_two_tables/mysql/sqlc.json new file mode 100644 index 0000000000..20b7096718 --- /dev/null +++ b/internal/endtoend/testdata/join_two_tables/mysql/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "mysql:beta", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql" + } + ] +} diff --git a/internal/endtoend/testdata/two_joins/go/db.go b/internal/endtoend/testdata/join_two_tables/postgresql/go/db.go similarity index 100% rename from internal/endtoend/testdata/two_joins/go/db.go rename to internal/endtoend/testdata/join_two_tables/postgresql/go/db.go diff --git a/internal/endtoend/testdata/two_joins/go/models.go b/internal/endtoend/testdata/join_two_tables/postgresql/go/models.go similarity index 100% rename from internal/endtoend/testdata/two_joins/go/models.go rename to internal/endtoend/testdata/join_two_tables/postgresql/go/models.go diff --git a/internal/endtoend/testdata/join_two_tables/postgresql/go/query.sql.go b/internal/endtoend/testdata/join_two_tables/postgresql/go/query.sql.go new file mode 100644 index 0000000000..eb076ffcd0 --- /dev/null +++ b/internal/endtoend/testdata/join_two_tables/postgresql/go/query.sql.go @@ -0,0 +1,38 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const twoJoins = `-- name: TwoJoins :many +SELECT foo.bar_id, foo.baz_id +FROM foo +JOIN bar ON bar.id = bar_id +JOIN baz ON baz.id = baz_id +` + +func (q *Queries) TwoJoins(ctx context.Context) ([]Foo, error) { + rows, err := q.db.QueryContext(ctx, twoJoins) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Foo + for rows.Next() { + var i Foo + if err := rows.Scan(&i.BarID, &i.BazID); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/endtoend/testdata/join_two_tables/postgresql/query.sql b/internal/endtoend/testdata/join_two_tables/postgresql/query.sql new file mode 100644 index 0000000000..8dcf3ae0d8 --- /dev/null +++ b/internal/endtoend/testdata/join_two_tables/postgresql/query.sql @@ -0,0 +1,9 @@ +CREATE TABLE foo (bar_id serial not null, baz_id serial not null); +CREATE TABLE bar (id serial not null); +CREATE TABLE baz (id serial not null); + +-- name: TwoJoins :many +SELECT foo.* +FROM foo +JOIN bar ON bar.id = bar_id +JOIN baz ON baz.id = baz_id; diff --git a/internal/endtoend/testdata/join_two_tables/postgresql/sqlc.json b/internal/endtoend/testdata/join_two_tables/postgresql/sqlc.json new file mode 100644 index 0000000000..c72b6132d5 --- /dev/null +++ b/internal/endtoend/testdata/join_two_tables/postgresql/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql" + } + ] +} diff --git a/internal/endtoend/testdata/ondeck/db.go b/internal/endtoend/testdata/json/mysql/go/db.go similarity index 96% rename from internal/endtoend/testdata/ondeck/db.go rename to internal/endtoend/testdata/json/mysql/go/db.go index d7224c1f91..6a99519302 100644 --- a/internal/endtoend/testdata/ondeck/db.go +++ b/internal/endtoend/testdata/json/mysql/go/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. -package ondeck +package querytest import ( "context" diff --git a/internal/endtoend/testdata/json/mysql/go/models.go b/internal/endtoend/testdata/json/mysql/go/models.go new file mode 100644 index 0000000000..4570584e83 --- /dev/null +++ b/internal/endtoend/testdata/json/mysql/go/models.go @@ -0,0 +1,12 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import ( + "encoding/json" +) + +type Foo struct { + A json.RawMessage + B json.RawMessage +} diff --git a/internal/endtoend/testdata/json/mysql/go/query.sql.go b/internal/endtoend/testdata/json/mysql/go/query.sql.go new file mode 100644 index 0000000000..c28c12d633 --- /dev/null +++ b/internal/endtoend/testdata/json/mysql/go/query.sql.go @@ -0,0 +1,17 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const selectFoo = `-- name: SelectFoo :exec +SELECT a, b FROM foo +` + +func (q *Queries) SelectFoo(ctx context.Context) error { + _, err := q.db.ExecContext(ctx, selectFoo) + return err +} diff --git a/internal/endtoend/testdata/json/mysql/query.sql b/internal/endtoend/testdata/json/mysql/query.sql new file mode 100644 index 0000000000..b0234e866a --- /dev/null +++ b/internal/endtoend/testdata/json/mysql/query.sql @@ -0,0 +1,7 @@ +CREATE TABLE foo ( + a json not null, + b json +); + +-- name: SelectFoo :exec +SELECT * FROM foo; diff --git a/internal/endtoend/testdata/json/mysql/sqlc.json b/internal/endtoend/testdata/json/mysql/sqlc.json new file mode 100644 index 0000000000..20b7096718 --- /dev/null +++ b/internal/endtoend/testdata/json/mysql/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "mysql:beta", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql" + } + ] +} diff --git a/internal/endtoend/testdata/json/postgresql/go/db.go b/internal/endtoend/testdata/json/postgresql/go/db.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/json/postgresql/go/db.go @@ -0,0 +1,29 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/json/go/models.go b/internal/endtoend/testdata/json/postgresql/go/models.go similarity index 100% rename from internal/endtoend/testdata/json/go/models.go rename to internal/endtoend/testdata/json/postgresql/go/models.go diff --git a/internal/endtoend/testdata/json/go/query.sql.go b/internal/endtoend/testdata/json/postgresql/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/json/go/query.sql.go rename to internal/endtoend/testdata/json/postgresql/go/query.sql.go diff --git a/internal/endtoend/testdata/json/query.sql b/internal/endtoend/testdata/json/postgresql/query.sql similarity index 100% rename from internal/endtoend/testdata/json/query.sql rename to internal/endtoend/testdata/json/postgresql/query.sql diff --git a/internal/endtoend/testdata/json/postgresql/sqlc.json b/internal/endtoend/testdata/json/postgresql/sqlc.json new file mode 100644 index 0000000000..c72b6132d5 --- /dev/null +++ b/internal/endtoend/testdata/json/postgresql/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql" + } + ] +} diff --git a/internal/endtoend/testdata/ondeck/models.go b/internal/endtoend/testdata/ondeck/models.go deleted file mode 100644 index 168667f881..0000000000 --- a/internal/endtoend/testdata/ondeck/models.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. - -package ondeck - -import ( - "database/sql" - "fmt" - "time" -) - -type Status string - -const ( - StatusOpen Status = "open" - StatusClosed Status = "closed" -) - -func (e *Status) Scan(src interface{}) error { - switch s := src.(type) { - case []byte: - *e = Status(s) - case string: - *e = Status(s) - default: - return fmt.Errorf("unsupported scan type for Status: %T", src) - } - return nil -} - -type City struct { - Slug string - Name string -} - -type Venue struct { - ID int32 - CreateAt time.Time - Status Status - Slug string - Name string - City string - SpotifyPlaylist string - SongkickID sql.NullString -} diff --git a/internal/endtoend/testdata/ondeck/query.sql b/internal/endtoend/testdata/ondeck/query.sql deleted file mode 100644 index 86193a205c..0000000000 --- a/internal/endtoend/testdata/ondeck/query.sql +++ /dev/null @@ -1,62 +0,0 @@ --- name: ListCityByName :many -SELECT * FROM city ORDER BY name; - --- name: GetCity :one -SELECT * FROM city WHERE slug = $1; - --- name: CreateCity :one -INSERT INTO city ( - name, - slug -) VALUES ( - $1, - $2 -) RETURNING *; - --- name: UpdateCity :exec -UPDATE city SET name = $2 WHERE slug = $1; - --- name: ListVenues :many -SELECT * -FROM venue -WHERE city = $1 -ORDER BY name; - --- name: DeleteVenue :exec -DELETE FROM venue -WHERE slug = $1 AND slug = $1; - --- name: GetVenue :one -SELECT * -FROM venue -WHERE slug = $1 AND city = $2; - --- name: CreateVenue :one -INSERT INTO venue ( - slug, - name, - city, - created_at, - spotify_playlist, - status -) VALUES ( - $1, - $2, - $3, - NOW(), - $4, - $5 -) RETURNING id; - - --- name: UpdateVenueName :one -UPDATE venue -SET name = $2 -WHERE slug = $1 -RETURNING id; - --- name: VenueCountByCity :many -SELECT city, count(*) -FROM venue -GROUP BY 1 -ORDER BY 1; diff --git a/internal/endtoend/testdata/ondeck/query.sql.go b/internal/endtoend/testdata/ondeck/query.sql.go deleted file mode 100644 index a20792bd19..0000000000 --- a/internal/endtoend/testdata/ondeck/query.sql.go +++ /dev/null @@ -1,251 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// source: query.sql - -package ondeck - -import ( - "context" -) - -const createCity = `-- name: CreateCity :one -INSERT INTO city ( - name, - slug -) VALUES ( - $1, - $2 -) RETURNING slug, name -` - -type CreateCityParams struct { - Name string - Slug string -} - -func (q *Queries) CreateCity(ctx context.Context, arg CreateCityParams) (City, error) { - row := q.db.QueryRowContext(ctx, createCity, arg.Name, arg.Slug) - var i City - err := row.Scan(&i.Slug, &i.Name) - return i, err -} - -const createVenue = `-- name: CreateVenue :one -INSERT INTO venue ( - slug, - name, - city, - created_at, - spotify_playlist, - status -) VALUES ( - $1, - $2, - $3, - NOW(), - $4, - $5 -) RETURNING id -` - -type CreateVenueParams struct { - Slug string - Name string - City string - SpotifyPlaylist string - Status Status -} - -func (q *Queries) CreateVenue(ctx context.Context, arg CreateVenueParams) (int32, error) { - row := q.db.QueryRowContext(ctx, createVenue, - arg.Slug, - arg.Name, - arg.City, - arg.SpotifyPlaylist, - arg.Status, - ) - var id int32 - err := row.Scan(&id) - return id, err -} - -const deleteVenue = `-- name: DeleteVenue :exec -DELETE FROM venue -WHERE slug = $1 AND slug = $1 -` - -func (q *Queries) DeleteVenue(ctx context.Context, slug string) error { - _, err := q.db.ExecContext(ctx, deleteVenue, slug) - return err -} - -const getCity = `-- name: GetCity :one -SELECT slug, name FROM city WHERE slug = $1 -` - -func (q *Queries) GetCity(ctx context.Context, slug string) (City, error) { - row := q.db.QueryRowContext(ctx, getCity, slug) - var i City - err := row.Scan(&i.Slug, &i.Name) - return i, err -} - -const getVenue = `-- name: GetVenue :one -SELECT id, create_at, status, slug, name, city, spotify_playlist, songkick_id -FROM venue -WHERE slug = $1 AND city = $2 -` - -type GetVenueParams struct { - Slug string - City string -} - -func (q *Queries) GetVenue(ctx context.Context, arg GetVenueParams) (Venue, error) { - row := q.db.QueryRowContext(ctx, getVenue, arg.Slug, arg.City) - var i Venue - err := row.Scan( - &i.ID, - &i.CreateAt, - &i.Status, - &i.Slug, - &i.Name, - &i.City, - &i.SpotifyPlaylist, - &i.SongkickID, - ) - return i, err -} - -const listCityByName = `-- name: ListCityByName :many -SELECT slug, name FROM city ORDER BY name -` - -func (q *Queries) ListCityByName(ctx context.Context) ([]City, error) { - rows, err := q.db.QueryContext(ctx, listCityByName) - if err != nil { - return nil, err - } - defer rows.Close() - var items []City - for rows.Next() { - var i City - if err := rows.Scan(&i.Slug, &i.Name); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const listVenues = `-- name: ListVenues :many -SELECT id, create_at, status, slug, name, city, spotify_playlist, songkick_id -FROM venue -WHERE city = $1 -ORDER BY name -` - -func (q *Queries) ListVenues(ctx context.Context, city string) ([]Venue, error) { - rows, err := q.db.QueryContext(ctx, listVenues, city) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Venue - for rows.Next() { - var i Venue - if err := rows.Scan( - &i.ID, - &i.CreateAt, - &i.Status, - &i.Slug, - &i.Name, - &i.City, - &i.SpotifyPlaylist, - &i.SongkickID, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const updateCity = `-- name: UpdateCity :exec -UPDATE city SET name = $2 WHERE slug = $1 -` - -type UpdateCityParams struct { - Slug string - Name string -} - -func (q *Queries) UpdateCity(ctx context.Context, arg UpdateCityParams) error { - _, err := q.db.ExecContext(ctx, updateCity, arg.Slug, arg.Name) - return err -} - -const updateVenueName = `-- name: UpdateVenueName :one -UPDATE venue -SET name = $2 -WHERE slug = $1 -RETURNING id -` - -type UpdateVenueNameParams struct { - Slug string - Name string -} - -func (q *Queries) UpdateVenueName(ctx context.Context, arg UpdateVenueNameParams) (int32, error) { - row := q.db.QueryRowContext(ctx, updateVenueName, arg.Slug, arg.Name) - var id int32 - err := row.Scan(&id) - return id, err -} - -const venueCountByCity = `-- name: VenueCountByCity :many -SELECT city, count(*) -FROM venue -GROUP BY 1 -ORDER BY 1 -` - -type VenueCountByCityRow struct { - City string - Count int64 -} - -func (q *Queries) VenueCountByCity(ctx context.Context) ([]VenueCountByCityRow, error) { - rows, err := q.db.QueryContext(ctx, venueCountByCity) - if err != nil { - return nil, err - } - defer rows.Close() - var items []VenueCountByCityRow - for rows.Next() { - var i VenueCountByCityRow - if err := rows.Scan(&i.City, &i.Count); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} diff --git a/internal/endtoend/testdata/ondeck/schema.sql b/internal/endtoend/testdata/ondeck/schema.sql deleted file mode 100644 index e7c62c4c3c..0000000000 --- a/internal/endtoend/testdata/ondeck/schema.sql +++ /dev/null @@ -1,17 +0,0 @@ -CREATE TABLE city ( - slug text PRIMARY KEY, - name text NOT NULL -); - -CREATE TYPE status AS ENUM ('open', 'closed'); - -CREATE TABLE venue ( - id SERIAL primary key, - create_at timestamp not null, - status status not null, - slug text not null, - name varchar(255) not null, - city text not null references city(slug), - spotify_playlist varchar not null, - songkick_id text -); diff --git a/internal/endtoend/testdata/ondeck/sqlc.json b/internal/endtoend/testdata/ondeck/sqlc.json deleted file mode 100644 index ed50b3b246..0000000000 --- a/internal/endtoend/testdata/ondeck/sqlc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "1", - "packages": [ - { - "path": ".", - "name": "ondeck", - "schema": "schema.sql", - "queries": "query.sql" - } - ] -} diff --git a/internal/endtoend/testdata/pg_ext_ltree/go/db.go b/internal/endtoend/testdata/pg_ext_ltree/go/db.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/pg_ext_ltree/go/db.go @@ -0,0 +1,29 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/ext_ltree/go/models.go b/internal/endtoend/testdata/pg_ext_ltree/go/models.go similarity index 100% rename from internal/endtoend/testdata/ext_ltree/go/models.go rename to internal/endtoend/testdata/pg_ext_ltree/go/models.go diff --git a/internal/endtoend/testdata/ext_ltree/query.sql b/internal/endtoend/testdata/pg_ext_ltree/query.sql similarity index 100% rename from internal/endtoend/testdata/ext_ltree/query.sql rename to internal/endtoend/testdata/pg_ext_ltree/query.sql diff --git a/internal/endtoend/testdata/json/sqlc.json b/internal/endtoend/testdata/pg_ext_ltree/sqlc.json similarity index 100% rename from internal/endtoend/testdata/json/sqlc.json rename to internal/endtoend/testdata/pg_ext_ltree/sqlc.json diff --git a/internal/endtoend/testdata/pg_generate_series/go/db.go b/internal/endtoend/testdata/pg_generate_series/go/db.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/pg_generate_series/go/db.go @@ -0,0 +1,29 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/generate_series/go/models.go b/internal/endtoend/testdata/pg_generate_series/go/models.go similarity index 100% rename from internal/endtoend/testdata/generate_series/go/models.go rename to internal/endtoend/testdata/pg_generate_series/go/models.go diff --git a/internal/endtoend/testdata/generate_series/go/query.sql.go b/internal/endtoend/testdata/pg_generate_series/go/query.sql.go similarity index 100% rename from internal/endtoend/testdata/generate_series/go/query.sql.go rename to internal/endtoend/testdata/pg_generate_series/go/query.sql.go diff --git a/internal/endtoend/testdata/generate_series/query.sql b/internal/endtoend/testdata/pg_generate_series/query.sql similarity index 100% rename from internal/endtoend/testdata/generate_series/query.sql rename to internal/endtoend/testdata/pg_generate_series/query.sql diff --git a/internal/endtoend/testdata/generate_series/sqlc.json b/internal/endtoend/testdata/pg_generate_series/sqlc.json similarity index 100% rename from internal/endtoend/testdata/generate_series/sqlc.json rename to internal/endtoend/testdata/pg_generate_series/sqlc.json diff --git a/internal/endtoend/testdata/dolphin_errors/query/from.sql b/internal/endtoend/testdata/syntax_errors/mysql/query/from.sql similarity index 100% rename from internal/endtoend/testdata/dolphin_errors/query/from.sql rename to internal/endtoend/testdata/syntax_errors/mysql/query/from.sql diff --git a/internal/endtoend/testdata/dolphin_errors/query/select.sql b/internal/endtoend/testdata/syntax_errors/mysql/query/select.sql similarity index 100% rename from internal/endtoend/testdata/dolphin_errors/query/select.sql rename to internal/endtoend/testdata/syntax_errors/mysql/query/select.sql diff --git a/internal/endtoend/testdata/dolphin_errors/query/typo.sql b/internal/endtoend/testdata/syntax_errors/mysql/query/typo.sql similarity index 100% rename from internal/endtoend/testdata/dolphin_errors/query/typo.sql rename to internal/endtoend/testdata/syntax_errors/mysql/query/typo.sql diff --git a/internal/endtoend/testdata/syntax_errors/mysql/schema.sql b/internal/endtoend/testdata/syntax_errors/mysql/schema.sql new file mode 100644 index 0000000000..f57533a01d --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/mysql/schema.sql @@ -0,0 +1,4 @@ +CREATE TABLE users ( + id integer NOT NULL AUTO_INCREMENT PRIMARY KEY, + first_name varchar(255) NOT NULL +) ENGINE=InnoDB; diff --git a/internal/endtoend/testdata/dolphin_errors/sqlc.json b/internal/endtoend/testdata/syntax_errors/mysql/sqlc.json similarity index 100% rename from internal/endtoend/testdata/dolphin_errors/sqlc.json rename to internal/endtoend/testdata/syntax_errors/mysql/sqlc.json diff --git a/internal/endtoend/testdata/dolphin_errors/stderr.txt b/internal/endtoend/testdata/syntax_errors/mysql/stderr.txt similarity index 100% rename from internal/endtoend/testdata/dolphin_errors/stderr.txt rename to internal/endtoend/testdata/syntax_errors/mysql/stderr.txt diff --git a/internal/endtoend/testdata/syntax_errors/postgresql/query/from.sql b/internal/endtoend/testdata/syntax_errors/postgresql/query/from.sql new file mode 100644 index 0000000000..872c38db7b --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/postgresql/query/from.sql @@ -0,0 +1,2 @@ +/* name: TooManyFroms :one */ +select id, first_name from users from where id = $1; diff --git a/internal/endtoend/testdata/syntax_errors/postgresql/query/select.sql b/internal/endtoend/testdata/syntax_errors/postgresql/query/select.sql new file mode 100644 index 0000000000..1d663f1105 --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/postgresql/query/select.sql @@ -0,0 +1,2 @@ +/* name: ExtraSelect :one */ +select id from users where select id; diff --git a/internal/endtoend/testdata/syntax_errors/postgresql/query/typo.sql b/internal/endtoend/testdata/syntax_errors/postgresql/query/typo.sql new file mode 100644 index 0000000000..311e8b8ff3 --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/postgresql/query/typo.sql @@ -0,0 +1,4 @@ +/* name: MisspelledSelect :one */ +selectt id, first_name from users; + + diff --git a/internal/endtoend/testdata/syntax_errors/postgresql/schema.sql b/internal/endtoend/testdata/syntax_errors/postgresql/schema.sql new file mode 100644 index 0000000000..4711d22be2 --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/postgresql/schema.sql @@ -0,0 +1,4 @@ +CREATE TABLE users ( + id SERIAL PRIMARY KEY, + first_name varchar(255) NOT NULL +); diff --git a/internal/endtoend/testdata/syntax_errors/postgresql/sqlc.json b/internal/endtoend/testdata/syntax_errors/postgresql/sqlc.json new file mode 100644 index 0000000000..ef84b16fcc --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/postgresql/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "name": "querytest", + "path": "go", + "schema": "schema.sql", + "queries": "query", + "engine": "postgresql" + } + ] +} diff --git a/internal/endtoend/testdata/syntax_errors/postgresql/stderr.txt b/internal/endtoend/testdata/syntax_errors/postgresql/stderr.txt new file mode 100644 index 0000000000..dc5dd9f3b1 --- /dev/null +++ b/internal/endtoend/testdata/syntax_errors/postgresql/stderr.txt @@ -0,0 +1,4 @@ +# package querytest +query/from.sql:1:1: syntax error at or near "from" +query/select.sql:1:1: syntax error at or near "select" +query/typo.sql:1:1: syntax error at or near "selectt"