File tree 5 files changed +61
-1
lines changed 5 files changed +61
-1
lines changed Original file line number Diff line number Diff line change @@ -27,3 +27,6 @@ WHERE id = ?;
27
27
/* name: Test :one */
28
28
SELECT * FROM node_mysql_types
29
29
LIMIT 1 ;
30
+
31
+ /* name: GetReservedWords :many */
32
+ SELECT ` id` , ` key` , ` value` FROM reserved_words;
Original file line number Diff line number Diff line change @@ -50,3 +50,10 @@ CREATE TABLE node_mysql_types (
50
50
51
51
c_json JSON
52
52
);
53
+
54
+ /* https://dev.mysql.com/doc/refman/8.4/en/keywords.html#keywords-8-4-detailed-I */
55
+ CREATE TABLE reserved_words (
56
+ ` id` BIGINT PRIMARY KEY AUTO_INCREMENT,
57
+ ` key` TEXT ,
58
+ ` value` TEXT
59
+ );
Original file line number Diff line number Diff line change @@ -209,3 +209,27 @@ export async function test(client: Client): Promise<TestRow | null> {
209
209
} ;
210
210
}
211
211
212
+ export const getReservedWordsQuery = `-- name: GetReservedWords :many
213
+ SELECT \`id\`, \`key\`, \`value\` FROM reserved_words` ;
214
+
215
+ export interface GetReservedWordsRow {
216
+ id : number ;
217
+ key : string | null ;
218
+ value : string | null ;
219
+ }
220
+
221
+ export async function getReservedWords ( client : Client ) : Promise < GetReservedWordsRow [ ] > {
222
+ const [ rows ] = await client . query < RowDataPacket [ ] > ( {
223
+ sql : getReservedWordsQuery ,
224
+ values : [ ] ,
225
+ rowsAsArray : true
226
+ } ) ;
227
+ return rows . map ( row => {
228
+ return {
229
+ id : row [ 0 ] ,
230
+ key : row [ 1 ] ,
231
+ value : row [ 2 ]
232
+ } ;
233
+ } ) ;
234
+ }
235
+
Original file line number Diff line number Diff line change @@ -209,3 +209,27 @@ export async function test(client: Client): Promise<TestRow | null> {
209
209
} ;
210
210
}
211
211
212
+ export const getReservedWordsQuery = `-- name: GetReservedWords :many
213
+ SELECT \`id\`, \`key\`, \`value\` FROM reserved_words` ;
214
+
215
+ export interface GetReservedWordsRow {
216
+ id : string ;
217
+ key : string | null ;
218
+ value : string | null ;
219
+ }
220
+
221
+ export async function getReservedWords ( client : Client ) : Promise < GetReservedWordsRow [ ] > {
222
+ const [ rows ] = await client . query < RowDataPacket [ ] > ( {
223
+ sql : getReservedWordsQuery ,
224
+ values : [ ] ,
225
+ rowsAsArray : true
226
+ } ) ;
227
+ return rows . map ( row => {
228
+ return {
229
+ id : row [ 0 ] ,
230
+ key : row [ 1 ] ,
231
+ value : row [ 2 ]
232
+ } ;
233
+ } ) ;
234
+ }
235
+
Original file line number Diff line number Diff line change @@ -221,6 +221,8 @@ function readInput(): GenerateRequest {
221
221
}
222
222
223
223
function queryDecl ( name : string , sql : string ) {
224
+ const escaped = sql . replace ( / ` / g, '\\`' ) ;
225
+
224
226
return factory . createVariableStatement (
225
227
[ factory . createToken ( SyntaxKind . ExportKeyword ) ] ,
226
228
factory . createVariableDeclarationList (
@@ -229,7 +231,7 @@ function queryDecl(name: string, sql: string) {
229
231
factory . createIdentifier ( name ) ,
230
232
undefined ,
231
233
undefined ,
232
- factory . createNoSubstitutionTemplateLiteral ( sql , sql )
234
+ factory . createNoSubstitutionTemplateLiteral ( escaped , escaped )
233
235
) ,
234
236
] ,
235
237
NodeFlags . Const //| NodeFlags.Constant | NodeFlags.Constant
You can’t perform that action at this time.
0 commit comments