Skip to content

Commit 990e3cb

Browse files
authored
Bugfix/datetime asyncpg (#53)
* feat(asyncpg): Add AsyncpgSkipTypeConversion function (main) * fix: Correct retType to hold type information for conversion Fixed the retType parameter in AsyncpgBuildPyQueryFunc and SQLite3BuildPyQueryFunc to hold the type information for conversion instead of just the type name. (bugfix/datetime-asyncpg) * feat(sqlc-gen-better-python): Add new files for asyncpg tests (bugfix/datetime-asyncpg) * feat(test): delete unnecessary log.txt file (main) * fragment
1 parent ca8bdac commit 990e3cb

File tree

20 files changed

+1021
-86
lines changed

20 files changed

+1021
-86
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Fixed
2+
body: Wrong deserialization of `datetime.datetime` when using `asyncpg`
3+
time: 2025-05-07T23:42:50.7837495+02:00
4+
custom:
5+
Author: rayakame
6+
PR: "53"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Fixed
2+
body: Fixed unnecessary type conversion when returning data from queries using `asyncpg`
3+
time: 2025-05-07T23:43:18.6210029+02:00
4+
custom:
5+
Author: rayakame
6+
PR: "53"

internal/codegen/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/rayakame/sqlc-gen-better-python/internal/core"
88
)
99

10-
type TypeBuildPyQueryFunc func(*core.Query, *builders.IndentStringBuilder, []string, string, bool) error
10+
type TypeBuildPyQueryFunc func(*core.Query, *builders.IndentStringBuilder, []string, core.PyType, bool) error
1111
type TypeAcceptedDriverCMDs func() []string
1212

1313
type Driver struct {

internal/codegen/drivers/aiosqlite.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111

1212
const AioSQLiteConn = "aiosqlite.Connection"
1313

14-
func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuilder, args []string, retType string, isClass bool) error {
14+
func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuilder, args []string, retType core.PyType, isClass bool) error {
1515
indentLevel := 0
1616
params := fmt.Sprintf("conn: %s", AioSQLiteConn)
1717
conn := "conn"
@@ -28,7 +28,7 @@ func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBui
2828
body.WriteString(fmt.Sprintf(", %s", arg))
2929
}
3030
if query.Cmd == metadata.CmdExec {
31-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
31+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
3232
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("await %s.execute(%s", conn, query.ConstantName))
3333
aiosqliteWriteParams(query, body)
3434
body.WriteLine(")")
@@ -38,24 +38,24 @@ func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBui
3838
aiosqliteWriteParams(query, body)
3939
body.WriteLine(")")
4040
} else if query.Cmd == metadata.CmdExecRows {
41-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
41+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
4242
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return await %s.execute(%s", conn, query.ConstantName))
4343
aiosqliteWriteParams(query, body)
4444
body.WriteLine(").rowcount")
4545
} else if query.Cmd == metadata.CmdExecLastId {
46-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
46+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
4747
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return await %s.execute(%s", conn, query.ConstantName))
4848
aiosqliteWriteParams(query, body)
4949
body.WriteLine(").lastrowid")
5050
} else if query.Cmd == metadata.CmdOne {
51-
body.WriteLine(fmt.Sprintf(") -> typing.Optional[%s]:", retType))
51+
body.WriteLine(fmt.Sprintf(") -> typing.Optional[%s]:", retType.Type))
5252
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("row = await (await %s.execute(%s", conn, query.ConstantName))
5353
aiosqliteWriteParams(query, body)
5454
body.WriteLine(")).fetchone()")
5555
body.WriteIndentedLine(indentLevel+1, "if row is None:")
5656
body.WriteIndentedLine(indentLevel+2, "return None")
5757
if query.Ret.IsStruct() {
58-
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s(", retType))
58+
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s(", retType.Type))
5959
i := 0
6060
for _, col := range query.Ret.Table.Columns {
6161
if i != 0 {
@@ -76,16 +76,16 @@ func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBui
7676
}
7777
body.WriteLine(")")
7878
} else {
79-
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return %s(row[0])", retType))
79+
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return %s(row[0])", retType.Type))
8080
}
8181
} else if query.Cmd == metadata.CmdMany {
82-
body.WriteLine(fmt.Sprintf(") -> typing.AsyncIterator[%s]:", retType))
82+
body.WriteLine(fmt.Sprintf(") -> typing.AsyncIterator[%s]:", retType.Type))
8383
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("stream = await %s.execute(%s", conn, query.ConstantName))
8484
aiosqliteWriteParams(query, body)
8585
body.WriteLine(")")
8686
body.WriteIndentedLine(indentLevel+1, "async for row in stream:")
8787
if query.Ret.IsStruct() {
88-
body.WriteIndentedString(indentLevel+2, fmt.Sprintf("yield %s(", retType))
88+
body.WriteIndentedString(indentLevel+2, fmt.Sprintf("yield %s(", retType.Type))
8989
i := 0
9090
for _, col := range query.Ret.Table.Columns {
9191
if i != 0 {
@@ -106,7 +106,7 @@ func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBui
106106
}
107107
body.WriteLine(")")
108108
} else {
109-
body.WriteIndentedLine(indentLevel+2, fmt.Sprintf("yield %s(row[0])", retType))
109+
body.WriteIndentedLine(indentLevel+2, fmt.Sprintf("yield %s(row[0])", retType.Type))
110110
}
111111
}
112112
return nil
@@ -123,6 +123,11 @@ func AioSQLiteAcceptedDriverCMDs() []string {
123123
}
124124
}
125125

126+
/*
127+
func AioSQLiteSkipTypeConversion() map[string]struct{} {
128+
return map[string]struct{}{}
129+
}*/
130+
126131
func aiosqliteWriteParams(query *core.Query, body *builders.IndentStringBuilder) {
127132
if len(query.Args) == 0 {
128133
return

internal/codegen/drivers/asyncpg.go

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import (
44
"fmt"
55
"github.com/rayakame/sqlc-gen-better-python/internal/codegen/builders"
66
"github.com/rayakame/sqlc-gen-better-python/internal/core"
7+
"github.com/rayakame/sqlc-gen-better-python/internal/log"
78
"github.com/sqlc-dev/plugin-sdk-go/metadata"
89
"strconv"
910
"strings"
1011
)
1112

1213
const AsyncpgConn = "asyncpg.Connection[asyncpg.Record]"
1314

14-
func AsyncpgBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuilder, args []string, retType string, isClass bool) error {
15+
func AsyncpgBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuilder, args []string, retType core.PyType, isClass bool) error {
1516
indentLevel := 0
1617
params := fmt.Sprintf("conn: %s", AsyncpgConn)
1718
conn := "conn"
@@ -28,19 +29,19 @@ func AsyncpgBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
2829
body.WriteString(fmt.Sprintf(", %s", arg))
2930
}
3031
if query.Cmd == metadata.CmdExec {
31-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
32+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
3233
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("await %s.execute(%s", conn, query.ConstantName))
3334
asyncpgWriteParams(query, body)
3435
body.WriteLine(")")
3536
} else if query.Cmd == metadata.CmdOne {
36-
body.WriteLine(fmt.Sprintf(") -> typing.Optional[%s]:", retType))
37+
body.WriteLine(fmt.Sprintf(") -> typing.Optional[%s]:", retType.Type))
3738
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("row = await %s.fetchrow(%s", conn, query.ConstantName))
3839
asyncpgWriteParams(query, body)
3940
body.WriteLine(")")
4041
body.WriteIndentedLine(indentLevel+1, "if row is None:")
4142
body.WriteIndentedLine(indentLevel+2, "return None")
4243
if query.Ret.IsStruct() {
43-
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s(", retType))
44+
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s(", retType.Type))
4445
i := 0
4546
for _, col := range query.Ret.Table.Columns {
4647
if i != 0 {
@@ -50,28 +51,43 @@ func AsyncpgBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
5051
var inner []string
5152
body.WriteString(fmt.Sprintf("%s=%s(", col.Name, col.Type.Type))
5253
for _, embedCol := range col.EmbedFields {
53-
inner = append(inner, fmt.Sprintf("%s=row[%s]", embedCol.Name, strconv.Itoa(i)))
54+
if embedCol.Name == "age" || embedCol.Name == "id" {
55+
log.GlobalLogger.LogByte([]byte(embedCol.Type.SqlType))
56+
}
57+
if _, found := AsyncpgDoTypeConversion()[embedCol.Type.SqlType]; found {
58+
inner = append(inner, fmt.Sprintf("%s=%s(row[%s])", embedCol.Name, embedCol.Type.Type, strconv.Itoa(i)))
59+
} else {
60+
inner = append(inner, fmt.Sprintf("%s=row[%s]", embedCol.Name, strconv.Itoa(i)))
61+
}
5462
i++
5563
}
5664
body.WriteString(strings.Join(inner, ", ") + ")")
5765
} else {
58-
body.WriteString(fmt.Sprintf("%s=row[%s]", col.Name, strconv.Itoa(i)))
66+
if _, found := AsyncpgDoTypeConversion()[col.Type.SqlType]; found {
67+
body.WriteString(fmt.Sprintf("%s=%s(row[%s])", col.Name, col.Type.Type, strconv.Itoa(i)))
68+
} else {
69+
body.WriteString(fmt.Sprintf("%s=row[%s]", col.Name, strconv.Itoa(i)))
70+
}
5971
i++
6072
}
6173
}
6274
body.WriteLine(")")
6375
} else {
64-
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return %s(row[0])", retType))
76+
if _, found := AsyncpgDoTypeConversion()[retType.SqlType]; found {
77+
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return %s(row[0])", retType.Type))
78+
} else {
79+
body.WriteIndentedLine(indentLevel+1, "return row[0]")
80+
}
6581
}
6682
} else if query.Cmd == metadata.CmdMany {
67-
body.WriteLine(fmt.Sprintf(") -> typing.Sequence[%s]:", retType))
83+
body.WriteLine(fmt.Sprintf(") -> typing.Sequence[%s]:", retType.Type))
6884
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("rows = await %s.fetch(%s", conn, query.ConstantName))
6985
asyncpgWriteParams(query, body)
7086
body.WriteLine(")")
71-
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return_rows: typing.List[%s] = []", retType))
87+
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return_rows: typing.List[%s] = []", retType.Type))
7288
body.WriteIndentedLine(indentLevel+1, "for row in rows:")
7389
if query.Ret.IsStruct() {
74-
body.WriteIndentedString(indentLevel+2, fmt.Sprintf("return_rows.append(%s(", retType))
90+
body.WriteIndentedString(indentLevel+2, fmt.Sprintf("return_rows.append(%s(", retType.Type))
7591
i := 0
7692
for _, col := range query.Ret.Table.Columns {
7793
if i != 0 {
@@ -81,7 +97,11 @@ func AsyncpgBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
8197
var inner []string
8298
body.WriteString(fmt.Sprintf("%s=%s(", col.Name, col.Type.Type))
8399
for _, embedCol := range col.EmbedFields {
84-
inner = append(inner, fmt.Sprintf("%s=row[%s]", embedCol.Name, strconv.Itoa(i)))
100+
if _, found := AsyncpgDoTypeConversion()[embedCol.Type.SqlType]; found {
101+
inner = append(inner, fmt.Sprintf("%s=%s(row[%s])", embedCol.Name, embedCol.Type.Type, strconv.Itoa(i)))
102+
} else {
103+
inner = append(inner, fmt.Sprintf("%s=row[%s]", embedCol.Name, strconv.Itoa(i)))
104+
}
85105
i++
86106
}
87107
body.WriteString(strings.Join(inner, ", ") + ")")
@@ -93,7 +113,11 @@ func AsyncpgBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
93113
body.WriteLine("))")
94114
body.WriteIndentedLine(indentLevel+1, "return return_rows")
95115
} else {
96-
body.WriteIndentedLine(indentLevel+2, fmt.Sprintf("return_rows.append(%s(row[0]))", retType))
116+
if _, found := AsyncpgDoTypeConversion()[retType.SqlType]; found {
117+
body.WriteIndentedLine(indentLevel+2, fmt.Sprintf("return_rows.append(%s(row[0]))", retType.Type))
118+
} else {
119+
body.WriteIndentedLine(indentLevel+2, "return_rows.append(row[0])")
120+
}
97121
body.WriteIndentedLine(indentLevel+1, "return return_rows")
98122
}
99123
}
@@ -108,6 +132,16 @@ func AsyncpgAcceptedDriverCMDs() []string {
108132
}
109133
}
110134

135+
func AsyncpgDoTypeConversion() map[string]struct{} {
136+
return map[string]struct{}{
137+
"bytea": {},
138+
"blob": {},
139+
"pg_catalog.bytea": {},
140+
"inet": {},
141+
"cidr": {},
142+
}
143+
}
144+
111145
func asyncpgWriteParams(query *core.Query, body *builders.IndentStringBuilder) {
112146
if len(query.Args) == 0 {
113147
return

internal/codegen/drivers/sqlite3.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111

1212
const SQLite3Conn = "sqlite3.Connection"
1313

14-
func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuilder, args []string, retType string, isClass bool) error {
14+
func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuilder, args []string, retType core.PyType, isClass bool) error {
1515
indentLevel := 0
1616
params := fmt.Sprintf("conn: %s", SQLite3Conn)
1717
conn := "conn"
@@ -28,7 +28,7 @@ func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
2828
body.WriteString(fmt.Sprintf(", %s", arg))
2929
}
3030
if query.Cmd == metadata.CmdExec {
31-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
31+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
3232
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("%s.execute(%s", conn, query.ConstantName))
3333
sqlite3WriteParams(query, body)
3434
body.WriteLine(")")
@@ -38,24 +38,24 @@ func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
3838
sqlite3WriteParams(query, body)
3939
body.WriteLine(")")
4040
} else if query.Cmd == metadata.CmdExecRows {
41-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
41+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
4242
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s.execute(%s", conn, query.ConstantName))
4343
sqlite3WriteParams(query, body)
4444
body.WriteLine(").rowcount")
4545
} else if query.Cmd == metadata.CmdExecLastId {
46-
body.WriteLine(fmt.Sprintf(") -> %s:", retType))
46+
body.WriteLine(fmt.Sprintf(") -> %s:", retType.Type))
4747
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s.execute(%s", conn, query.ConstantName))
4848
sqlite3WriteParams(query, body)
4949
body.WriteLine(").lastrowid")
5050
} else if query.Cmd == metadata.CmdOne {
51-
body.WriteLine(fmt.Sprintf(") -> typing.Optional[%s]:", retType))
51+
body.WriteLine(fmt.Sprintf(") -> typing.Optional[%s]:", retType.Type))
5252
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("row = %s.execute(%s", conn, query.ConstantName))
5353
sqlite3WriteParams(query, body)
5454
body.WriteLine(").fetchone()")
5555
body.WriteIndentedLine(indentLevel+1, "if row is None:")
5656
body.WriteIndentedLine(indentLevel+2, "return None")
5757
if query.Ret.IsStruct() {
58-
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s(", retType))
58+
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("return %s(", retType.Type))
5959
i := 0
6060
for _, col := range query.Ret.Table.Columns {
6161
if i != 0 {
@@ -76,16 +76,16 @@ func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
7676
}
7777
body.WriteLine(")")
7878
} else {
79-
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return %s(row[0])", retType))
79+
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("return %s(row[0])", retType.Type))
8080
}
8181
} else if query.Cmd == metadata.CmdMany {
82-
body.WriteLine(fmt.Sprintf(") -> typing.List[%s]:", retType))
83-
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("rows: typing.List[%s] = []", retType))
82+
body.WriteLine(fmt.Sprintf(") -> typing.List[%s]:", retType.Type))
83+
body.WriteIndentedLine(indentLevel+1, fmt.Sprintf("rows: typing.List[%s] = []", retType.Type))
8484
body.WriteIndentedString(indentLevel+1, fmt.Sprintf("for row in %s.execute(%s", conn, query.ConstantName))
8585
sqlite3WriteParams(query, body)
8686
body.WriteLine(").fetchall():")
8787
if query.Ret.IsStruct() {
88-
body.WriteIndentedString(indentLevel+2, fmt.Sprintf("rows.append(%s(", retType))
88+
body.WriteIndentedString(indentLevel+2, fmt.Sprintf("rows.append(%s(", retType.Type))
8989
i := 0
9090
for _, col := range query.Ret.Table.Columns {
9191
if i != 0 {
@@ -106,7 +106,7 @@ func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
106106
}
107107
body.WriteLine("))")
108108
} else {
109-
body.WriteIndentedLine(indentLevel+2, fmt.Sprintf("rows.append(%s(row[0]))", retType))
109+
body.WriteIndentedLine(indentLevel+2, fmt.Sprintf("rows.append(%s(row[0]))", retType.Type))
110110
}
111111
body.WriteIndentedLine(indentLevel+1, "return rows")
112112
}
@@ -124,6 +124,11 @@ func SQLite3AcceptedDriverCMDs() []string {
124124
}
125125
}
126126

127+
/*
128+
func SQLite3SkipTypeConversion() []string {
129+
return []string{}
130+
}*/
131+
127132
func sqlite3WriteParams(query *core.Query, body *builders.IndentStringBuilder) {
128133
if len(query.Args) == 0 {
129134
return

internal/codegen/queries.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,12 @@ func (dr *Driver) buildPyQueriesFile(imp *core.Importer, queries []core.Query, s
112112
}
113113
for i, query := range queries {
114114
args, retType, addedPyTableNames := dr.prepareFunctionHeader(&query, pyTableBody)
115+
returnType := core.PyType{
116+
SqlType: query.Ret.Typ.SqlType,
117+
Type: retType,
118+
}
115119
allNames = append(allNames, addedPyTableNames...)
116-
err := dr.buildPyQueryFunc(&query, funcBody, args, retType, dr.conf.EmitClasses)
120+
err := dr.buildPyQueryFunc(&query, funcBody, args, returnType, dr.conf.EmitClasses)
117121
if err != nil {
118122
return nil, err
119123
}

internal/types/postgresql.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,25 @@ func PostgresTypeToPython(req *plugin.GenerateRequest, col *plugin.Column, conf
1616
return "int"
1717
case "float", "double precision", "float8", "pg_catalog.float8", "real", "float4", "pg_catalog.float4":
1818
return "float"
19-
case "numeric", "pg_catalog.numeric", "money":
19+
case "numeric", "pg_catalog.numeric":
2020
return "decimal.Decimal"
21+
case "money":
22+
return "str"
2123
case "boolean", "bool", "pg_catalog.bool":
2224
return "bool"
23-
case "json", "jsonb":
24-
return "typing.Any"
25+
case "pg_catalog.json", "json", "jsonb":
26+
return "str"
2527
case "bytea", "blob", "pg_catalog.bytea":
2628
return "memoryview"
2729
case "date":
2830
return "datetime.date"
29-
case "pg_catalog.time", "pg_catalog.timetz":
31+
case "pg_catalog.time", "pg_catalog.timetz", "timetz":
3032
return "datetime.time"
3133
case "pg_catalog.timestamp", "pg_catalog.timestamptz", "timestamptz":
3234
return "datetime.datetime"
3335
case "interval", "pg_catalog.interval":
3436
return "datetime.timedelta"
35-
case "text", "pg_catalog.varchar", "pg_catalog.bpchar", "string", "citext":
37+
case "text", "pg_catalog.varchar", "bpchar", "pg_catalog.bpchar", "char", "string", "citext":
3638
return "str"
3739
case "uuid":
3840
return "uuid.UUID"

sqlc.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins:
33
- name: python
44
wasm:
55
url: file://sqlc-gen-better-python.wasm
6-
sha256: e5f90e5f52b4847a35d9c60a2828134bcd2a89f798793899fed7a0738aefed1a
6+
sha256: 0f10a820ea8fc7d969eef3c7a552b799591fb437585a638d0eca8f9d19dedde9
77
sql:
88
- schema: test/schema.sql
99
queries: test/queries.sql
@@ -15,7 +15,8 @@ sql:
1515
package: test
1616
sql_driver: asyncpg
1717
model_type: msgspec
18-
emit_classes: true
19-
omit_unused_models: true
18+
emit_classes: false
19+
omit_unused_models: false
2020
emit_init_file: true
21+
debug: true
2122

0 commit comments

Comments
 (0)