File tree Expand file tree Collapse file tree 5 files changed +61
-1
lines changed
Expand file tree Collapse file tree 5 files changed +61
-1
lines changed Original file line number Diff line number Diff line change @@ -27,3 +27,6 @@ WHERE id = ?;
2727/* name: Test :one */
2828SELECT * FROM node_mysql_types
2929LIMIT 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 (
5050
5151 c_json JSON
5252);
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 @@ -215,3 +215,27 @@ export async function test(client: Client): Promise<TestRow | null> {
215215 } ;
216216}
217217
218+ export const getReservedWordsQuery = `-- name: GetReservedWords :many
219+ SELECT \`id\`, \`key\`, \`value\` FROM reserved_words` ;
220+
221+ export interface GetReservedWordsRow {
222+ id : number ;
223+ key : string | null ;
224+ value : string | null ;
225+ }
226+
227+ export async function getReservedWords ( client : Client ) : Promise < GetReservedWordsRow [ ] > {
228+ const [ rows ] = await client . query < RowDataPacket [ ] > ( {
229+ sql : getReservedWordsQuery ,
230+ values : [ ] ,
231+ rowsAsArray : true
232+ } ) ;
233+ return rows . map ( row => {
234+ return {
235+ id : row [ 0 ] ,
236+ key : row [ 1 ] ,
237+ value : row [ 2 ]
238+ } ;
239+ } ) ;
240+ }
241+
Original file line number Diff line number Diff line change @@ -215,3 +215,27 @@ export async function test(client: Client): Promise<TestRow | null> {
215215 } ;
216216}
217217
218+ export const getReservedWordsQuery = `-- name: GetReservedWords :many
219+ SELECT \`id\`, \`key\`, \`value\` FROM reserved_words` ;
220+
221+ export interface GetReservedWordsRow {
222+ id : string ;
223+ key : string | null ;
224+ value : string | null ;
225+ }
226+
227+ export async function getReservedWords ( client : Client ) : Promise < GetReservedWordsRow [ ] > {
228+ const [ rows ] = await client . query < RowDataPacket [ ] > ( {
229+ sql : getReservedWordsQuery ,
230+ values : [ ] ,
231+ rowsAsArray : true
232+ } ) ;
233+ return rows . map ( row => {
234+ return {
235+ id : row [ 0 ] ,
236+ key : row [ 1 ] ,
237+ value : row [ 2 ]
238+ } ;
239+ } ) ;
240+ }
241+
Original file line number Diff line number Diff line change @@ -225,6 +225,8 @@ function readInput(): GenerateRequest {
225225}
226226
227227function queryDecl ( name : string , sql : string ) {
228+ const escaped = sql . replace ( / ` / g, '\\`' ) ;
229+
228230 return factory . createVariableStatement (
229231 [ factory . createToken ( SyntaxKind . ExportKeyword ) ] ,
230232 factory . createVariableDeclarationList (
@@ -233,7 +235,7 @@ function queryDecl(name: string, sql: string) {
233235 factory . createIdentifier ( name ) ,
234236 undefined ,
235237 undefined ,
236- factory . createNoSubstitutionTemplateLiteral ( sql , sql )
238+ factory . createNoSubstitutionTemplateLiteral ( escaped , escaped )
237239 ) ,
238240 ] ,
239241 NodeFlags . Const //| NodeFlags.Constant | NodeFlags.Constant
You can’t perform that action at this time.
0 commit comments