File tree Expand file tree Collapse file tree 4 files changed +31
-15
lines changed
Expand file tree Collapse file tree 4 files changed +31
-15
lines changed Original file line number Diff line number Diff line change @@ -35,21 +35,21 @@ export default function sqliteConnector(opts: ConnectorOptions): Connector<Datab
3535 dialect : "sqlite" ,
3636 getInstance : ( ) => getDB ( ) ,
3737 exec : sql => getDB ( ) . exec ( sql ) ,
38- prepare : sql => new StatementWrapper ( getDB ( ) . prepare ( sql ) )
38+ prepare : sql => new StatementWrapper ( ( ) => getDB ( ) . prepare ( sql ) )
3939 } ;
4040}
4141
42- class StatementWrapper extends BoundableStatement < RawStatement > {
43- all ( ...params ) {
44- return Promise . resolve ( this . _statement . all ( ...params ) ) ;
42+ class StatementWrapper extends BoundableStatement < ( ) => RawStatement > {
43+ async all ( ...params ) {
44+ return this . _statement ( ) . all ( ...params )
4545 }
4646
47- run ( ...params ) {
48- const res = this . _statement . run ( ...params ) ;
49- return Promise . resolve ( { success : res . changes > 0 , ...res } ) ;
47+ async run ( ...params ) {
48+ const res = this . _statement ( ) . run ( ...params )
49+ return { success : res . changes > 0 , ...res }
5050 }
5151
52- get ( ...params ) {
53- return Promise . resolve ( this . _statement . get ( ...params ) ) ;
52+ async get ( ...params ) {
53+ return this . _statement ( ) . get ( ...params )
5454 }
5555}
Original file line number Diff line number Diff line change @@ -42,21 +42,21 @@ export default function nodeSqlite3Connector(opts: ConnectorOptions): Connector<
4242 getDB ( ) . exec ( sql )
4343 return { success : true }
4444 } ,
45- prepare : sql => new StatementWrapper ( getDB ( ) . prepare ( sql ) ) ,
45+ prepare : sql => new StatementWrapper ( ( ) => getDB ( ) . prepare ( sql ) ) ,
4646 }
4747}
4848
49- class StatementWrapper extends BoundableStatement < StatementSync > {
49+ class StatementWrapper extends BoundableStatement < ( ) => StatementSync > {
5050 async all ( ...params ) {
51- const raws = this . _statement . all ( ...params )
51+ const raws = this . _statement ( ) . all ( ...params )
5252 return raws
5353 }
5454 async run ( ...params ) {
55- const res = this . _statement . run ( ...params )
55+ const res = this . _statement ( ) . run ( ...params )
5656 return { success : true , ...res }
5757 }
5858 async get ( ...params ) {
59- const raw = this . _statement . get ( ...params )
59+ const raw = this . _statement ( ) . get ( ...params )
6060 return raw
6161 }
6262}
Original file line number Diff line number Diff line change @@ -44,25 +44,37 @@ export default function nodeSqlite3Connector(opts: ConnectorOptions): Connector<
4444 dialect : 'sqlite' ,
4545 getInstance : ( ) => getDB ( ) ,
4646 exec : ( sql : string ) => query ( sql ) ,
47- prepare : sql => new StatementWrapper ( getDB ( ) . prepare ( sql ) ) ,
47+ prepare : ( sql ) => new StatementWrapper ( sql , getDB ( ) )
4848 }
4949}
5050
5151class StatementWrapper extends BoundableStatement < sqlite3 . Statement > {
52+ #onError?: ( err : Error | null ) => void // #162
53+
54+ constructor ( sql : string , db : sqlite3 . Database ) {
55+ super ( db . prepare ( sql , ( err ) => {
56+ if ( err && this . #onError) {
57+ return this . #onError( err ) ;
58+ }
59+ } ) )
60+ }
5261 async all ( ...params ) {
5362 const rows = await new Promise < unknown [ ] > ( ( resolve , reject ) => {
63+ this . #onError = reject
5464 this . _statement . all ( ...params , ( err , rows ) => err ? reject ( err ) : resolve ( rows ) )
5565 } )
5666 return rows
5767 }
5868 async run ( ...params ) {
5969 await new Promise < void > ( ( resolve , reject ) => {
70+ this . #onError = reject
6071 this . _statement . run ( ...params , ( err ) => err ? reject ( err ) : resolve ( ) )
6172 } )
6273 return { success : true }
6374 }
6475 async get ( ...params ) {
6576 const row = await new Promise ( ( resolve , reject ) => {
77+ this . #onError = reject
6678 this . _statement . get ( ...params , ( err , row ) => err ? reject ( err ) : resolve ( row ) )
6779 } )
6880 return row
Original file line number Diff line number Diff line change @@ -61,4 +61,8 @@ export function testConnector<TConnector extends Connector = Connector>(opts: {
6161 const { rows } = await db . sql `SELECT * FROM users WHERE id = ${ userId } ` ;
6262 expect ( rows ) . toMatchInlineSnapshot ( userSnapshot ) ;
6363 } ) ;
64+
65+ it ( "deferred prepare errors" , async ( ) => {
66+ await expect ( db . prepare ( "SELECT * FROM non_existing_table" ) . all ( ) ) . rejects . toThrowError ( "non_existing_table" )
67+ } ) ;
6468}
You can’t perform that action at this time.
0 commit comments