@@ -10,7 +10,7 @@ import (
1010
1111const AioSQLiteConn = "aiosqlite.Connection"
1212
13- func AioSQLiteBuildPyQueryFunc (query * core.Query , body * builders.IndentStringBuilder , argType string , retType string , isClass bool ) error {
13+ func AioSQLiteBuildPyQueryFunc (query * core.Query , body * builders.IndentStringBuilder , args [] string , retType string , isClass bool ) error {
1414 indentLevel := 0
1515 params := fmt .Sprintf ("conn: %s" , AioSQLiteConn )
1616 conn := "conn"
@@ -20,73 +20,36 @@ func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBui
2020 indentLevel = 1
2121 }
2222 body .WriteIndentedString (indentLevel , fmt .Sprintf ("async def %s(%s" , query .FuncName , params ))
23- if argType != "" {
24- body .WriteString (fmt .Sprintf (", %s: %s" , query .Arg .Name , argType ))
23+ for i , arg := range args {
24+ if i == 0 {
25+ body .WriteString (", *" )
26+ }
27+ body .WriteString (fmt .Sprintf (", %s" , arg ))
2528 }
2629 if query .Cmd == metadata .CmdExec {
2730 body .WriteLine (fmt .Sprintf (") -> %s:" , retType ))
2831 body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("await %s.execute(%s" , conn , query .ConstantName ))
29- if argType != "" {
30- if query .Arg .IsStruct () {
31- for _ , col := range query .Arg .Table .Columns {
32- body .WriteString (fmt .Sprintf (", %s.%s" , query .Arg .Name , col .Name ))
33- }
34- } else {
35- body .WriteString (fmt .Sprintf (", %s" , query .Arg .Name ))
36- }
37- }
32+ aiosqliteWriteParams (query , body )
3833 body .WriteLine (")" )
3934 } else if query .Cmd == metadata .CmdExecResult {
4035 body .WriteLine (fmt .Sprintf (") -> %s:" , "aiosqlite.Cursor" ))
4136 body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("await %s.execute(%s" , conn , query .ConstantName ))
42- if argType != "" {
43- if query .Arg .IsStruct () {
44- for _ , col := range query .Arg .Table .Columns {
45- body .WriteString (fmt .Sprintf (", %s.%s" , query .Arg .Name , col .Name ))
46- }
47- } else {
48- body .WriteString (fmt .Sprintf (", %s" , query .Arg .Name ))
49- }
50- }
37+ aiosqliteWriteParams (query , body )
5138 body .WriteLine (")" )
5239 } else if query .Cmd == metadata .CmdExecRows {
5340 body .WriteLine (fmt .Sprintf (") -> %s:" , retType ))
5441 body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("await %s.execute(%s" , conn , query .ConstantName ))
55- if argType != "" {
56- if query .Arg .IsStruct () {
57- for _ , col := range query .Arg .Table .Columns {
58- body .WriteString (fmt .Sprintf (", %s.%s" , query .Arg .Name , col .Name ))
59- }
60- } else {
61- body .WriteString (fmt .Sprintf (", %s" , query .Arg .Name ))
62- }
63- }
42+ aiosqliteWriteParams (query , body )
6443 body .WriteLine (").rowcount" )
6544 } else if query .Cmd == metadata .CmdExecLastId {
6645 body .WriteLine (fmt .Sprintf (") -> %s:" , retType ))
6746 body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("await %s.execute(%s" , conn , query .ConstantName ))
68- if argType != "" {
69- if query .Arg .IsStruct () {
70- for _ , col := range query .Arg .Table .Columns {
71- body .WriteString (fmt .Sprintf (", %s.%s" , query .Arg .Name , col .Name ))
72- }
73- } else {
74- body .WriteString (fmt .Sprintf (", %s" , query .Arg .Name ))
75- }
76- }
47+ aiosqliteWriteParams (query , body )
7748 body .WriteLine (").lastrowid" )
7849 } else if query .Cmd == metadata .CmdOne {
7950 body .WriteLine (fmt .Sprintf (") -> typing.Optional[%s]:" , retType ))
8051 body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("row = await (await %s.execute(%s" , conn , query .ConstantName ))
81- if argType != "" {
82- if query .Arg .IsStruct () {
83- for _ , col := range query .Arg .Table .Columns {
84- body .WriteString (fmt .Sprintf (", %s.%s" , query .Arg .Name , col .Name ))
85- }
86- } else {
87- body .WriteString (fmt .Sprintf (", %s" , query .Arg .Name ))
88- }
89- }
52+ aiosqliteWriteParams (query , body )
9053 body .WriteLine (")).fetchone()" )
9154 body .WriteIndentedLine (indentLevel + 1 , "if row is None:" )
9255 body .WriteIndentedLine (indentLevel + 2 , "return None" )
@@ -105,15 +68,7 @@ func AioSQLiteBuildPyQueryFunc(query *core.Query, body *builders.IndentStringBui
10568 } else if query .Cmd == metadata .CmdMany {
10669 body .WriteLine (fmt .Sprintf (") -> typing.AsyncIterator[%s]:" , retType ))
10770 body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("stream = await %s.execute(%s" , conn , query .ConstantName ))
108- if argType != "" {
109- if query .Arg .IsStruct () {
110- for _ , col := range query .Arg .Table .Columns {
111- body .WriteString (fmt .Sprintf (", %s.%s" , query .Arg .Name , col .Name ))
112- }
113- } else {
114- body .WriteString (fmt .Sprintf (", %s" , query .Arg .Name ))
115- }
116- }
71+ aiosqliteWriteParams (query , body )
11772 body .WriteLine (")" )
11873 body .WriteIndentedLine (indentLevel + 1 , "async for row in stream:" )
11974 if query .Ret .IsStruct () {
@@ -142,3 +97,16 @@ func AioSQLiteAcceptedDriverCMDs() []string {
14297 metadata .CmdMany ,
14398 }
14499}
100+
101+ func aiosqliteWriteParams (query * core.Query , body * builders.IndentStringBuilder ) {
102+ if len (query .Args ) == 0 {
103+ return
104+ }
105+ params := "("
106+ for _ , arg := range query .Args {
107+ if ! arg .IsEmpty () {
108+ params += fmt .Sprintf ("%s, " , arg .Name )
109+ }
110+ }
111+ body .WriteString ("," + params + ")" )
112+ }
0 commit comments