8000 Pass params as args to asyncpg functions · sqlc-dev/sqlc-gen-python@554bc94 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit 554bc94

Browse files
committed
Pass params as args to asyncpg functions
1 parent 7776922 commit 554bc94

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# Sqlc-gen-python for Asyncpg
2+
13
## Build
24

35
make bin/sqlc-gen-python

internal/gen.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,26 @@ func (q Query) AddArgs(args *pyast.Arguments) {
151151
}
152152
}
153153

154+
func (q Query) ArgNodes() []*pyast.Node {
155+
args := []*pyast.Node{}
156+
i := 1
157+
for _, a := range q.Args {
158+
if a.isEmpty() {
159+
continue
160+
}
161+
if a.IsStruct() {
162+
for _, f := range a.Struct.Fields {
163+
args = append(args, typeRefNode(a.Name, f.Name))
164+
i++
165+
}
166+
} else {
167+
args = append(args, poet.Name(a.Name))
168+
i++
169+
}
170+
}
171+
return args
172+
}
173+
154174
func (q Query) ArgDictNode() *pyast.Node {
155175
dict := &pyast.Dict{}
156176
i := 1
@@ -612,11 +632,9 @@ func typeRefNode(base string, parts ...string) *pyast.Node {
612632
return n
613633
}
614634

615-
func connMethodNode(method, name string, arg *pyast.Node) *pyast.Node {
635+
func connMethodNode(method, name string, params ...*pyast.Node) *pyast.Node {
616636
args := []*pyast.Node{poet.Name(name)}
617-
if arg != nil {
618-
args = append(args, arg)
619-
}
637+
args = append(args, params...)
620638
return &pyast.Node{
621639
Node: &pyast.Node_Call{
622640
Call: &pyast.Call{
@@ -869,7 +887,7 @@ func buildQueryTree(ctx *pyTmplCtx, i *importer, source string) *pyast.Node {
869887

870888
switch q.Cmd {
871889
case ":one":
872-
fetchrow := connMethodNode("fetchrow", q.ConstantName, q.ArgDictNode())
890+
fetchrow := connMethodNode("fetchrow", q.ConstantName, q.ArgNodes()...)
873891
f.Body = append(f.Body,
874892
assignNode("row", poet.Await(fetchrow)),
875893
poet.Node(
@@ -896,7 +914,7 @@ func buildQueryTree(ctx *pyTmplCtx, i *importer, source string) *pyast.Node {
896914
)
897915
f.Returns = subscriptNode("Optional", q.Ret.Annotation())
898916
case ":many":
899-
cursor := connMethodNode("cursor", q.ConstantName, q.ArgDictNode())
917+
cursor := connMethodNode("cursor", q.ConstantName, q.ArgNodes()...)
900918
f.Body = append(f.Body,
901919
poet.Node(
902920
&pyast.AsyncFor{
@@ -914,7 +932,7 @@ func buildQueryTree(ctx *pyTmplCtx, i *importer, source string) *pyast.Node {
914932
)
915933
f.Returns = subscriptNode("AsyncIterator", q.Ret.Annotation())
916934
case ":exec":
917-
exec := connMethodNode("execute", q.ConstantName, q.ArgDictNode())
935+
exec := connMethodNode("execute", q.ConstantName, q.ArgNodes()...)
918936
f.Body = append(f.Body, poet.Await(exec))
919937
f.Returns = poet.Constant(nil)
920938
default:

0 commit comments

Comments
 (0)
0