@@ -178,6 +178,11 @@ export function preamble(queries: unknown) {
178178 undefined ,
179179 factory . createIdentifier ( "RowDataPacket" )
180180 ) ,
181+ factory . createImportSpecifier (
182+ false ,
183+ undefined ,
184+ factory . createIdentifier ( "ResultSetHeader" )
185+ ) ,
181186 ] )
182187 ) ,
183188 factory . createStringLiteral ( "mysql2/promise" ) ,
@@ -611,10 +616,114 @@ export function oneDecl(
611616 ) ;
612617}
613618
619+ export function execlastidDecl (
620+ funcName : string ,
621+ queryName : string ,
622+ argIface : string | undefined ,
623+ params : Parameter [ ]
624+ ) {
625+ const funcParams = funcParamsDecl ( argIface , params ) ;
626+
627+ return factory . createFunctionDeclaration (
628+ [
629+ factory . createToken ( SyntaxKind . ExportKeyword ) ,
630+ factory . createToken ( SyntaxKind . AsyncKeyword ) ,
631+ ] ,
632+ undefined ,
633+ factory . createIdentifier ( funcName ) ,
634+ undefined ,
635+ funcParams ,
636+ factory . createTypeReferenceNode ( factory . createIdentifier ( "Promise" ) , [
637+ factory . createTypeReferenceNode ( 'number' , undefined ) ,
638+ ] ) ,
639+ factory . createBlock (
640+ [
641+ factory . createVariableStatement (
642+ undefined ,
643+ factory . createVariableDeclarationList (
644+ [
645+ factory . createVariableDeclaration (
646+ factory . createArrayBindingPattern ( [
647+ factory . createBindingElement (
648+ undefined ,
649+ undefined ,
650+ factory . createIdentifier ( "result" ) ,
651+ undefined
652+ ) ,
653+ ] ) ,
654+ undefined ,
655+ undefined ,
656+ factory . createAwaitExpression (
657+ factory . createCallExpression (
658+ factory . createPropertyAccessExpression (
659+ factory . createIdentifier ( "client" ) ,
660+ factory . createIdentifier ( "query" )
661+ ) ,
662+ [
663+ factory . createTypeReferenceNode (
664+ factory . createIdentifier ( "ResultSetHeader" ) ,
665+ undefined
666+ )
667+ ] ,
668+ [
669+ factory . createObjectLiteralExpression (
670+ [
671+ factory . createPropertyAssignment (
672+ factory . createIdentifier ( "sql" ) ,
673+ factory . createIdentifier ( queryName )
674+ ) ,
675+ factory . createPropertyAssignment (
676+ factory . createIdentifier ( "values" ) ,
677+ factory . createArrayLiteralExpression (
678+ params . map ( ( param , i ) =>
679+ factory . createPropertyAccessExpression (
680+ factory . createIdentifier ( "args" ) ,
681+ factory . createIdentifier (
682+ argName ( i , param . column )
683+ )
684+ )
685+ ) ,
686+ false
687+ )
688+ ) ,
689+ ] ,
690+ true
691+ ) ,
692+ ]
693+ )
694+ )
695+ )
696+ ] ,
697+ NodeFlags . Const |
698+ // NodeFlags.Constant |
699+ NodeFlags . AwaitContext |
700+ // NodeFlags.Constant |
701+ NodeFlags . ContextFlags |
702+ NodeFlags . TypeExcludesFlags
703+ )
704+ ) ,
705+ factory . createReturnStatement (
706+ factory . createBinaryExpression (
707+ factory . createPropertyAccessChain (
708+ factory . createIdentifier ( "result" ) ,
709+ factory . createToken ( SyntaxKind . QuestionDotToken ) ,
710+ factory . createIdentifier ( "insertId" )
711+ ) ,
712+ factory . createToken ( SyntaxKind . QuestionQuestionToken ) ,
713+ factory . createNumericLiteral ( 0 )
714+ )
715+ ) ,
716+ ] ,
717+ true
718+ )
719+ )
720+ }
721+
614722export default {
615723 columnType,
616724 preamble,
617725 execDecl,
618726 manyDecl,
619727 oneDecl,
728+ execlastidDecl,
620729} ;
0 commit comments