From c2366e8c2136f91d49457705980e0deec46b480a Mon Sep 17 00:00:00 2001 From: Alessio Dionisi Date: Sun, 21 Mar 2021 12:54:46 +0100 Subject: [PATCH 1/3] customizable output file names --- internal/codegen/golang/gen.go | 27 ++++++++++++--- internal/codegen/golang/imports.go | 6 ++-- internal/config/config.go | 26 ++++++++------ internal/config/v_one.go | 54 +++++++++++++++++------------- 4 files changed, 71 insertions(+), 42 deletions(-) diff --git a/internal/codegen/golang/gen.go b/internal/codegen/golang/gen.go index 138a9f41cd..f9551dc6ac 100644 --- a/internal/codegen/golang/gen.go +++ b/internal/codegen/golang/gen.go @@ -427,21 +427,38 @@ func generate(settings config.CombinedSettings, enums []Enum, structs []Struct, fmt.Println(b.String()) return fmt.Errorf("source error: %w", err) } - if !strings.HasSuffix(name, ".go") { - name += ".go" + suffix := ".go" + if golang.OutputFilesSuffix != "" { + suffix = golang.OutputFilesSuffix + } + if !strings.HasSuffix(name, suffix) { + name += suffix } output[name] = string(code) return nil } - if err := execute("db.go", "dbFile"); err != nil { + dbFileName := "db.go" + if golang.OutputDBFileName != "" { + dbFileName = golang.OutputDBFileName + } + modelsFileName := "models.go" + if golang.OutputModelsFileName != "" { + modelsFileName = golang.OutputModelsFileName + } + querierFileName := "querier.go" + if golang.OutputQuerierFileName != "" { + querierFileName = golang.OutputQuerierFileName + } + + if err := execute(dbFileName, "dbFile"); err != nil { return nil, err } - if err := execute("models.go", "modelsFile"); err != nil { + if err := execute(modelsFileName, "modelsFile"); err != nil { return nil, err } if golang.EmitInterface { - if err := execute("querier.go", "interfaceFile"); err != nil { + if err := execute(querierFileName, "interfaceFile"); err != nil { return nil, err } } diff --git a/internal/codegen/golang/imports.go b/internal/codegen/golang/imports.go index d30d20285f..350262ad68 100644 --- a/internal/codegen/golang/imports.go +++ b/internal/codegen/golang/imports.go @@ -89,11 +89,11 @@ func (i *importer) usesArrays() bool { func (i *importer) Imports(filename string) [][]ImportSpec { switch filename { - case "db.go": + case i.Settings.Go.OutputDBFileName: return mergeImports(i.dbImports()) - case "models.go": + case i.Settings.Go.OutputModelsFileName: return mergeImports(i.modelImports()) - case "querier.go": + case i.Settings.Go.OutputQuerierFileName: return mergeImports(i.interfaceImports()) default: return mergeImports(i.queryImports(filename)) diff --git a/internal/config/config.go b/internal/config/config.go index bdfba2d28d..edcb7f7681 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -110,17 +110,21 @@ type SQLGen struct { } type SQLGo struct { - EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` - EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` - EmitDBTags bool `json:"emit_db_tags" yaml:"emit_db_tags"` - EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"` - EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` - EmitEmptySlices bool `json:"emit_empty_slices,omitempty" yaml:"emit_empty_slices"` - JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"` - Package string `json:"package" yaml:"package"` - Out string `json:"out" yaml:"out"` - Overrides []Override `json:"overrides,omitempty" yaml:"overrides"` - Rename map[string]string `json:"rename,omitempty" yaml:"rename"` + EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` + EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` + EmitDBTags bool `json:"emit_db_tags" yaml:"emit_db_tags"` + EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"` + EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` + EmitEmptySlices bool `json:"emit_empty_slices,omitempty" yaml:"emit_empty_slices"` + JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"` + Package string `json:"package" yaml:"package"` + Out string `json:"out" yaml:"out"` + Overrides []Override `json:"overrides,omitempty" yaml:"overrides"` + Rename map[string]string `json:"rename,omitempty" yaml:"rename"` + OutputDBFileName string `json:"output_db_file_name,omitempty" yaml:"output_db_file_name"` + OutputModelsFileName string `json:"output_models_file_name,omitempty" yaml:"output_models_file_name"` + OutputQuerierFileName string `json:"output_querier_file_name,omitempty" yaml:"output_querier_file_name"` + OutputFilesSuffix string `json:"output_files_suffix,omitempty" yaml:"output_files_suffix"` } type SQLKotlin struct { diff --git a/internal/config/v_one.go b/internal/config/v_one.go index 19210df3aa..91dba02375 100644 --- a/internal/config/v_one.go +++ b/internal/config/v_one.go @@ -16,19 +16,23 @@ type V1GenerateSettings struct { } type v1PackageSettings struct { - Name string `json:"name" yaml:"name"` - Engine Engine `json:"engine,omitempty" yaml:"engine"` - Path string `json:"path" yaml:"path"` - Schema Paths `json:"schema" yaml:"schema"` - Queries Paths `json:"queries" yaml:"queries"` - EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` - EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` - EmitDBTags bool `json:"emit_db_tags" yaml:"emit_db_tags"` - EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"` - EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` - EmitEmptySlices bool `json:"emit_empty_slices,omitempty" yaml:"emit_empty_slices"` - JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"` - Overrides []Override `json:"overrides" yaml:"overrides"` + Name string `json:"name" yaml:"name"` + Engine Engine `json:"engine,omitempty" yaml:"engine"` + Path string `json:"path" yaml:"path"` + Schema Paths `json:"schema" yaml:"schema"` + Queries Paths `json:"queries" yaml:"queries"` + EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` + EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` + EmitDBTags bool `json:"emit_db_tags" yaml:"emit_db_tags"` + EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"` + EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` + EmitEmptySlices bool `json:"emit_empty_slices,omitempty" yaml:"emit_empty_slices"` + JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"` + Overrides []Override `json:"overrides" yaml:"overrides"` + OutputDBFileName string `json:"output_db_file_name,omitempty" yaml:"output_db_file_name"` + OutputModelsFileName string `json:"output_models_file_name,omitempty" yaml:"output_models_file_name"` + OutputQuerierFileName string `json:"output_querier_file_name,omitempty" yaml:"output_querier_file_name"` + OutputFilesSuffix string `json:"output_files_suffix,omitempty" yaml:"output_files_suffix"` } func v1ParseConfig(rd io.Reader) (Config, error) { @@ -104,16 +108,20 @@ func (c *V1GenerateSettings) Translate() Config { Queries: pkg.Queries, Gen: SQLGen{ Go: &SQLGo{ - EmitInterface: pkg.EmitInterface, - EmitJSONTags: pkg.EmitJSONTags, - EmitDBTags: pkg.EmitDBTags, - EmitPreparedQueries: pkg.EmitPreparedQueries, - EmitExactTableNames: pkg.EmitExactTableNames, - EmitEmptySlices: pkg.EmitEmptySlices, - Package: pkg.Name, - Out: pkg.Path, - Overrides: pkg.Overrides, - JSONTagsCaseStyle: pkg.JSONTagsCaseStyle, + EmitInterface: pkg.EmitInterface, + EmitJSONTags: pkg.EmitJSONTags, + EmitDBTags: pkg.EmitDBTags, + EmitPreparedQueries: pkg.EmitPreparedQueries, + EmitExactTableNames: pkg.EmitExactTableNames, + EmitEmptySlices: pkg.EmitEmptySlices, + Package: pkg.Name, + Out: pkg.Path, + Overrides: pkg.Overrides, + JSONTagsCaseStyle: pkg.JSONTagsCaseStyle, + OutputDBFileName: pkg.OutputDBFileName, + OutputModelsFileName: pkg.OutputModelsFileName, + OutputQuerierFileName: pkg.OutputQuerierFileName, + OutputFilesSuffix: pkg.OutputFilesSuffix, }, }, }) From bd7e8014ca187bebc82c984fc74dba421dc48216 Mon Sep 17 00:00:00 2001 From: adnsio Date: Tue, 4 May 2021 00:10:29 +0200 Subject: [PATCH 2/3] fix tests --- internal/codegen/golang/imports.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/internal/codegen/golang/imports.go b/internal/codegen/golang/imports.go index 350262ad68..70a2a9e94b 100644 --- a/internal/codegen/golang/imports.go +++ b/internal/codegen/golang/imports.go @@ -88,12 +88,25 @@ func (i *importer) usesArrays() bool { } func (i *importer) Imports(filename string) [][]ImportSpec { + dbFileName := "db.go" + if i.Settings.Go.OutputDBFileName != "" { + dbFileName = i.Settings.Go.OutputDBFileName + } + modelsFileName := "models.go" + if i.Settings.Go.OutputModelsFileName != "" { + modelsFileName = i.Settings.Go.OutputModelsFileName + } + querierFileName := "querier.go" + if i.Settings.Go.OutputQuerierFileName != "" { + querierFileName = i.Settings.Go.OutputQuerierFileName + } + switch filename { - case i.Settings.Go.OutputDBFileName: + case dbFileName: return mergeImports(i.dbImports()) - case i.Settings.Go.OutputModelsFileName: + case modelsFileName: return mergeImports(i.modelImports()) - case i.Settings.Go.OutputQuerierFileName: + case querierFileName: return mergeImports(i.interfaceImports()) default: return mergeImports(i.queryImports(filename)) From e4b93c24bcea78f852da408e532525fe57d4de9a Mon Sep 17 00:00:00 2001 From: adnsio Date: Tue, 4 May 2021 00:38:57 +0200 Subject: [PATCH 3/3] use OutputFilesSuffix only on queryFile template, add tests --- internal/codegen/golang/gen.go | 11 +++--- .../testdata/output_db_file_name/go/db_gen.go | 29 +++++++++++++++ .../testdata/output_db_file_name/go/models.go | 9 +++++ .../output_db_file_name/go/query.sql.go | 35 +++++++++++++++++++ .../testdata/output_db_file_name/query.sql | 4 +++ .../testdata/output_db_file_name/sqlc.json | 12 +++++++ .../testdata/output_files_suffix/go/db.go | 29 +++++++++++++++ .../testdata/output_files_suffix/go/models.go | 9 +++++ .../output_files_suffix/go/query.sql_gen.go | 35 +++++++++++++++++++ .../testdata/output_files_suffix/query.sql | 4 +++ .../testdata/output_files_suffix/sqlc.json | 12 +++++++ .../testdata/output_models_file_name/go/db.go | 29 +++++++++++++++ .../output_models_file_name/go/models_gen.go | 9 +++++ .../output_models_file_name/go/query.sql.go | 35 +++++++++++++++++++ .../output_models_file_name/query.sql | 4 +++ .../output_models_file_name/sqlc.json | 12 +++++++ .../output_querier_file_name/go/db.go | 29 +++++++++++++++ .../output_querier_file_name/go/models.go | 9 +++++ .../go/querier_gen.go | 13 +++++++ .../output_querier_file_name/go/query.sql.go | 35 +++++++++++++++++++ .../output_querier_file_name/query.sql | 4 +++ .../output_querier_file_name/sqlc.json | 13 +++++++ 22 files changed, 376 insertions(+), 5 deletions(-) create mode 100644 internal/endtoend/testdata/output_db_file_name/go/db_gen.go create mode 100644 internal/endtoend/testdata/output_db_file_name/go/models.go create mode 100644 internal/endtoend/testdata/output_db_file_name/go/query.sql.go create mode 100644 internal/endtoend/testdata/output_db_file_name/query.sql create mode 100644 internal/endtoend/testdata/output_db_file_name/sqlc.json create mode 100644 internal/endtoend/testdata/output_files_suffix/go/db.go create mode 100644 internal/endtoend/testdata/output_files_suffix/go/models.go create mode 100644 internal/endtoend/testdata/output_files_suffix/go/query.sql_gen.go create mode 100644 internal/endtoend/testdata/output_files_suffix/query.sql create mode 100644 internal/endtoend/testdata/output_files_suffix/sqlc.json create mode 100644 internal/endtoend/testdata/output_models_file_name/go/db.go create mode 100644 internal/endtoend/testdata/output_models_file_name/go/models_gen.go create mode 100644 internal/endtoend/testdata/output_models_file_name/go/query.sql.go create mode 100644 internal/endtoend/testdata/output_models_file_name/query.sql create mode 100644 internal/endtoend/testdata/output_models_file_name/sqlc.json create mode 100644 internal/endtoend/testdata/output_querier_file_name/go/db.go create mode 100644 internal/endtoend/testdata/output_querier_file_name/go/models.go create mode 100644 internal/endtoend/testdata/output_querier_file_name/go/querier_gen.go create mode 100644 internal/endtoend/testdata/output_querier_file_name/go/query.sql.go create mode 100644 internal/endtoend/testdata/output_querier_file_name/query.sql create mode 100644 internal/endtoend/testdata/output_querier_file_name/sqlc.json diff --git a/internal/codegen/golang/gen.go b/internal/codegen/golang/gen.go index f9551dc6ac..55d543103f 100644 --- a/internal/codegen/golang/gen.go +++ b/internal/codegen/golang/gen.go @@ -427,12 +427,13 @@ func generate(settings config.CombinedSettings, enums []Enum, structs []Struct, fmt.Println(b.String()) return fmt.Errorf("source error: %w", err) } - suffix := ".go" - if golang.OutputFilesSuffix != "" { - suffix = golang.OutputFilesSuffix + + if templateName == "queryFile" && golang.OutputFilesSuffix != "" { + name += golang.OutputFilesSuffix } - if !strings.HasSuffix(name, suffix) { - name += suffix + + if !strings.HasSuffix(name, ".go") { + name += ".go" } output[name] = string(code) return nil diff --git a/internal/endtoend/testdata/output_db_file_name/go/db_gen.go b/internal/endtoend/testdata/output_db_file_name/go/db_gen.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/output_db_file_name/go/db_gen.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/output_db_file_name/go/models.go b/internal/endtoend/testdata/output_db_file_name/go/models.go new file mode 100644 index 0000000000..6fc2fc8685 --- /dev/null +++ b/internal/endtoend/testdata/output_db_file_name/go/models.go @@ -0,0 +1,9 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type User struct { + ID int64 +} diff --git a/internal/endtoend/testdata/output_db_file_name/go/query.sql.go b/internal/endtoend/testdata/output_db_file_name/go/query.sql.go new file mode 100644 index 0000000000..d84d2c087f --- /dev/null +++ b/internal/endtoend/testdata/output_db_file_name/go/query.sql.go @@ -0,0 +1,35 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const user = `-- name: User :many +SELECT "user".id FROM "user" +` + +func (q *Queries) User(ctx context.Context) ([]int64, error) { + rows, err := q.db.QueryContext(ctx, user) + if err != nil { + return nil, err + } + defer rows.Close() + var items []int64 + for rows.Next() { + var id int64 + if err := rows.Scan(&id); err != nil { + return nil, err + } + items = append(items, id) + } + 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/output_db_file_name/query.sql b/internal/endtoend/testdata/output_db_file_name/query.sql new file mode 100644 index 0000000000..3191419956 --- /dev/null +++ b/internal/endtoend/testdata/output_db_file_name/query.sql @@ -0,0 +1,4 @@ +CREATE TABLE "user" (id bigserial not null); + +-- name: User :many +SELECT "user".* FROM "user"; diff --git a/internal/endtoend/testdata/output_db_file_name/sqlc.json b/internal/endtoend/testdata/output_db_file_name/sqlc.json new file mode 100644 index 0000000000..47ab7b2085 --- /dev/null +++ b/internal/endtoend/testdata/output_db_file_name/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql", + "output_db_file_name": "db_gen.go" + } + ] +} diff --git a/internal/endtoend/testdata/output_files_suffix/go/db.go b/internal/endtoend/testdata/output_files_suffix/go/db.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/output_files_suffix/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/output_files_suffix/go/models.go b/internal/endtoend/testdata/output_files_suffix/go/models.go new file mode 100644 index 0000000000..6fc2fc8685 --- /dev/null +++ b/internal/endtoend/testdata/output_files_suffix/go/models.go @@ -0,0 +1,9 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type User struct { + ID int64 +} diff --git a/internal/endtoend/testdata/output_files_suffix/go/query.sql_gen.go b/internal/endtoend/testdata/output_files_suffix/go/query.sql_gen.go new file mode 100644 index 0000000000..d84d2c087f --- /dev/null +++ b/internal/endtoend/testdata/output_files_suffix/go/query.sql_gen.go @@ -0,0 +1,35 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const user = `-- name: User :many +SELECT "user".id FROM "user" +` + +func (q *Queries) User(ctx context.Context) ([]int64, error) { + rows, err := q.db.QueryContext(ctx, user) + if err != nil { + return nil, err + } + defer rows.Close() + var items []int64 + for rows.Next() { + var id int64 + if err := rows.Scan(&id); err != nil { + return nil, err + } + items = append(items, id) + } + 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/output_files_suffix/query.sql b/internal/endtoend/testdata/output_files_suffix/query.sql new file mode 100644 index 0000000000..3191419956 --- /dev/null +++ b/internal/endtoend/testdata/output_files_suffix/query.sql @@ -0,0 +1,4 @@ +CREATE TABLE "user" (id bigserial not null); + +-- name: User :many +SELECT "user".* FROM "user"; diff --git a/internal/endtoend/testdata/output_files_suffix/sqlc.json b/internal/endtoend/testdata/output_files_suffix/sqlc.json new file mode 100644 index 0000000000..7708c21017 --- /dev/null +++ b/internal/endtoend/testdata/output_files_suffix/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql", + "output_files_suffix": "_gen.go" + } + ] +} diff --git a/internal/endtoend/testdata/output_models_file_name/go/db.go b/internal/endtoend/testdata/output_models_file_name/go/db.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/output_models_file_name/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/output_models_file_name/go/models_gen.go b/internal/endtoend/testdata/output_models_file_name/go/models_gen.go new file mode 100644 index 0000000000..6fc2fc8685 --- /dev/null +++ b/internal/endtoend/testdata/output_models_file_name/go/models_gen.go @@ -0,0 +1,9 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type User struct { + ID int64 +} diff --git a/internal/endtoend/testdata/output_models_file_name/go/query.sql.go b/internal/endtoend/testdata/output_models_file_name/go/query.sql.go new file mode 100644 index 0000000000..d84d2c087f --- /dev/null +++ b/internal/endtoend/testdata/output_models_file_name/go/query.sql.go @@ -0,0 +1,35 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const user = `-- name: User :many +SELECT "user".id FROM "user" +` + +func (q *Queries) User(ctx context.Context) ([]int64, error) { + rows, err := q.db.QueryContext(ctx, user) + if err != nil { + return nil, err + } + defer rows.Close() + var items []int64 + for rows.Next() { + var id int64 + if err := rows.Scan(&id); err != nil { + return nil, err + } + items = append(items, id) + } + 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/output_models_file_name/query.sql b/internal/endtoend/testdata/output_models_file_name/query.sql new file mode 100644 index 0000000000..3191419956 --- /dev/null +++ b/internal/endtoend/testdata/output_models_file_name/query.sql @@ -0,0 +1,4 @@ +CREATE TABLE "user" (id bigserial not null); + +-- name: User :many +SELECT "user".* FROM "user"; diff --git a/internal/endtoend/testdata/output_models_file_name/sqlc.json b/internal/endtoend/testdata/output_models_file_name/sqlc.json new file mode 100644 index 0000000000..71178ebc3c --- /dev/null +++ b/internal/endtoend/testdata/output_models_file_name/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql", + "output_models_file_name": "models_gen.go" + } + ] +} diff --git a/internal/endtoend/testdata/output_querier_file_name/go/db.go b/internal/endtoend/testdata/output_querier_file_name/go/db.go new file mode 100644 index 0000000000..6a99519302 --- /dev/null +++ b/internal/endtoend/testdata/output_querier_file_name/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/output_querier_file_name/go/models.go b/internal/endtoend/testdata/output_querier_file_name/go/models.go new file mode 100644 index 0000000000..6fc2fc8685 --- /dev/null +++ b/internal/endtoend/testdata/output_querier_file_name/go/models.go @@ -0,0 +1,9 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import () + +type User struct { + ID int64 +} diff --git a/internal/endtoend/testdata/output_querier_file_name/go/querier_gen.go b/internal/endtoend/testdata/output_querier_file_name/go/querier_gen.go new file mode 100644 index 0000000000..0cb8fcfe05 --- /dev/null +++ b/internal/endtoend/testdata/output_querier_file_name/go/querier_gen.go @@ -0,0 +1,13 @@ +// Code generated by sqlc. DO NOT EDIT. + +package querytest + +import ( + "context" +) + +type Querier interface { + User(ctx context.Context) ([]int64, error) +} + +var _ Querier = (*Queries)(nil) diff --git a/internal/endtoend/testdata/output_querier_file_name/go/query.sql.go b/internal/endtoend/testdata/output_querier_file_name/go/query.sql.go new file mode 100644 index 0000000000..d84d2c087f --- /dev/null +++ b/internal/endtoend/testdata/output_querier_file_name/go/query.sql.go @@ -0,0 +1,35 @@ +// Code generated by sqlc. DO NOT EDIT. +// source: query.sql + +package querytest + +import ( + "context" +) + +const user = `-- name: User :many +SELECT "user".id FROM "user" +` + +func (q *Queries) User(ctx context.Context) ([]int64, error) { + rows, err := q.db.QueryContext(ctx, user) + if err != nil { + return nil, err + } + defer rows.Close() + var items []int64 + for rows.Next() { + var id int64 + if err := rows.Scan(&id); err != nil { + return nil, err + } + items = append(items, id) + } + 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/output_querier_file_name/query.sql b/internal/endtoend/testdata/output_querier_file_name/query.sql new file mode 100644 index 0000000000..3191419956 --- /dev/null +++ b/internal/endtoend/testdata/output_querier_file_name/query.sql @@ -0,0 +1,4 @@ +CREATE TABLE "user" (id bigserial not null); + +-- name: User :many +SELECT "user".* FROM "user"; diff --git a/internal/endtoend/testdata/output_querier_file_name/sqlc.json b/internal/endtoend/testdata/output_querier_file_name/sqlc.json new file mode 100644 index 0000000000..30fc6f0460 --- /dev/null +++ b/internal/endtoend/testdata/output_querier_file_name/sqlc.json @@ -0,0 +1,13 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "querytest", + "schema": "query.sql", + "queries": "query.sql", + "emit_interface": true, + "output_querier_file_name": "querier_gen.go" + } + ] +}