diff --git a/internal/endtoend/testdata/emit_pydantic_models/sqlc.yaml b/internal/endtoend/testdata/emit_pydantic_models/sqlc.yaml index 180ce29..556942f 100644 --- a/internal/endtoend/testdata/emit_pydantic_models/sqlc.yaml +++ b/internal/endtoend/testdata/emit_pydantic_models/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql @@ -15,4 +15,4 @@ sql: package: db emit_sync_querier: true emit_async_querier: true - emit_pydantic_models: true \ No newline at end of file + emit_pydantic_models: true diff --git a/internal/endtoend/testdata/exec_result/sqlc.yaml b/internal/endtoend/testdata/exec_result/sqlc.yaml index 2adbd31..597a534 100644 --- a/internal/endtoend/testdata/exec_result/sqlc.yaml +++ b/internal/endtoend/testdata/exec_result/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/endtoend/testdata/exec_rows/sqlc.yaml b/internal/endtoend/testdata/exec_rows/sqlc.yaml index 2adbd31..597a534 100644 --- a/internal/endtoend/testdata/exec_rows/sqlc.yaml +++ b/internal/endtoend/testdata/exec_rows/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/endtoend/testdata/inflection_exclude_table_names/sqlc.yaml b/internal/endtoend/testdata/inflection_exclude_table_names/sqlc.yaml index aba5400..7120e7e 100644 --- a/internal/endtoend/testdata/inflection_exclude_table_names/sqlc.yaml +++ b/internal/endtoend/testdata/inflection_exclude_table_names/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/endtoend/testdata/query_parameter_limit_two/sqlc.yaml b/internal/endtoend/testdata/query_parameter_limit_two/sqlc.yaml index e389988..44288e9 100644 --- a/internal/endtoend/testdata/query_parameter_limit_two/sqlc.yaml +++ b/internal/endtoend/testdata/query_parameter_limit_two/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/endtoend/testdata/query_parameter_limit_undefined/sqlc.yaml b/internal/endtoend/testdata/query_parameter_limit_undefined/sqlc.yaml index 66d7a14..81c117a 100644 --- a/internal/endtoend/testdata/query_parameter_limit_undefined/sqlc.yaml +++ b/internal/endtoend/testdata/query_parameter_limit_undefined/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/endtoend/testdata/query_parameter_limit_zero/sqlc.yaml b/internal/endtoend/testdata/query_parameter_limit_zero/sqlc.yaml index 274f730..fdf8bb7 100644 --- a/internal/endtoend/testdata/query_parameter_limit_zero/sqlc.yaml +++ b/internal/endtoend/testdata/query_parameter_limit_zero/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/endtoend/testdata/query_parameter_no_limit/sqlc.yaml b/internal/endtoend/testdata/query_parameter_no_limit/sqlc.yaml index b563730..0a68be2 100644 --- a/internal/endtoend/testdata/query_parameter_no_limit/sqlc.yaml +++ b/internal/endtoend/testdata/query_parameter_no_limit/sqlc.yaml @@ -3,7 +3,7 @@ plugins: - name: py wasm: url: file://../../../../bin/sqlc-gen-python.wasm - sha256: "a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e" + sha256: "8b2fef2ff398f9cbe23191ff639aa45ef1d68e49040c5e22eed28390365d6f76" sql: - schema: schema.sql queries: query.sql diff --git a/internal/gen.go b/internal/gen.go index f81c53b..f0eb05c 100644 --- a/internal/gen.go +++ b/internal/gen.go @@ -193,6 +193,8 @@ func pyInnerType(req *plugin.GenerateRequest, col *plugin.Column) string { switch req.Settings.Engine { case "postgresql": return postgresType(req, col) + case "sqlite": + return sqliteType(req, col) default: log.Println("unsupported engine type") return "Any" diff --git a/internal/sqlite_type.go b/internal/sqlite_type.go new file mode 100644 index 0000000..76866ba --- /dev/null +++ b/internal/sqlite_type.go @@ -0,0 +1,50 @@ +package python + +import ( + "log" + "strings" + + "github.com/sqlc-dev/plugin-sdk-go/plugin" + "github.com/sqlc-dev/plugin-sdk-go/sdk" +) + +func sqliteType(req *plugin.GenerateRequest, col *plugin.Column) string { + dt := strings.ToLower(sdk.DataType(col.Type)) + + // see: https://github.com/sqlc-dev/sqlc/blob/main/internal/codegen/golang/sqlite_type.go + switch dt { + case "int", "integer", "tinyint", "smallint", "mediumint", "bigint", "unsignedbigint", "int2", "int8": + return "int" + case "blob": + return "bytes" + case "real", "double", "double precision", "float": + return "float" + case "boolean", "bool": + return "bool" + case "date": + return "datetime.date" + case "datetime", "timestamp": + return "datetime.datetime" + case "any": + return "Any" + } + + switch { + case strings.HasPrefix(dt, "character"), + strings.HasPrefix(dt, "varchar"), + strings.HasPrefix(dt, "varyingcharacter"), + strings.HasPrefix(dt, "nchar"), + strings.HasPrefix(dt, "nativecharacter"), + strings.HasPrefix(dt, "nvarchar"), + dt == "text", + dt == "clob", + dt == "json": + return "str" + case strings.HasPrefix(dt, "decimal"), dt == "numeric": + return "float" + + default: + log.Printf("unknown SQLite type: %s\n", dt) + return "Any" + } +}