@@ -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,117 @@ 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 . createUnionTypeNode ( [
638+ factory . createTypeReferenceNode ( 'number' , undefined ) ,
639+ factory . createLiteralTypeNode ( factory . createNull ( ) ) ,
640+ ] )
641+ ] ) ,
642+ factory . createBlock (
643+ [
644+ factory . createVariableStatement (
645+ undefined ,
646+ factory . createVariableDeclarationList (
647+ [
648+ factory . createVariableDeclaration (
649+ factory . createArrayBindingPattern ( [
650+ factory . createBindingElement (
651+ undefined ,
652+ undefined ,
653+ factory . createIdentifier ( "result" ) ,
654+ undefined
655+ ) ,
656+ ] ) ,
657+ undefined ,
658+ undefined ,
659+ factory . createAwaitExpression (
660+ factory . createCallExpression (
661+ factory . createPropertyAccessExpression (
662+ factory . createIdentifier ( "client" ) ,
663+ factory . createIdentifier ( "query" )
664+ ) ,
665+ [
666+ factory . createTypeReferenceNode (
667+ factory . createIdentifier ( "ResultSetHeader" ) ,
668+ undefined
669+ )
670+ ] ,
671+ [
672+ factory . createObjectLiteralExpression (
673+ [
674+ factory . createPropertyAssignment (
675+ factory . createIdentifier ( "sql" ) ,
676+ factory . createIdentifier ( queryName )
677+ ) ,
678+ factory . createPropertyAssignment (
679+ factory . createIdentifier ( "values" ) ,
680+ factory . createArrayLiteralExpression (
681+ params . map ( ( param , i ) =>
682+ factory . createPropertyAccessExpression (
683+ factory . createIdentifier ( "args" ) ,
684+ factory . createIdentifier (
685+ argName ( i , param . column )
686+ )
687+ )
688+ ) ,
689+ false
690+ )
691+ ) ,
692+ ] ,
693+ true
694+ ) ,
695+ ]
696+ )
697+ )
698+ )
699+ ] ,
700+ NodeFlags . Const |
701+ // NodeFlags.Constant |
702+ NodeFlags . AwaitContext |
703+ // NodeFlags.Constant |
704+ NodeFlags . ContextFlags |
705+ NodeFlags . TypeExcludesFlags
706+ )
707+ ) ,
708+ factory . createReturnStatement (
709+ factory . createBinaryExpression (
710+ factory . createPropertyAccessChain (
711+ factory . createIdentifier ( "result" ) ,
712+ factory . createToken ( SyntaxKind . QuestionDotToken ) ,
713+ factory . createIdentifier ( "insertId" )
714+ ) ,
715+ factory . createToken ( SyntaxKind . QuestionQuestionToken ) ,
716+ factory . createNull ( )
717+ )
718+ ) ,
719+ ] ,
720+ true
721+ )
722+ )
723+ }
724+
614725export default {
615726 columnType,
616727 preamble,
617728 execDecl,
618729 manyDecl,
619730 oneDecl,
731+ execlastidDecl,
620732} ;
0 commit comments