UNPKG

@a2lix/schemql

Version:

A lightweight TypeScript library that enhances your SQL workflow by combining raw SQL with targeted type safety and schema validation

1 lines 1.55 kB
import{AdapterErrorCode as e,BaseAdapterError as t}from"./baseAdapterError.mjs";var n=class{constructor(e){this.db=e,this.queryAll=e=>{let t;try{t=this.db.prepare(e)}catch(e){throw r.createFromBetterSqlite3(e)}return e=>{try{return e?t.all(e):t.all()}catch(n){if(n instanceof TypeError&&n.message===`This statement does not return data. Use run() instead`)return this.handleTypeErrorRun(t,e),[];throw r.createFromBetterSqlite3(n)}}},this.queryFirst=e=>{let t;try{t=this.db.prepare(e)}catch(e){throw r.createFromBetterSqlite3(e)}return e=>{try{return e?t.get(e):t.get()}catch(n){if(n instanceof TypeError&&n.message===`This statement does not return data. Use run() instead`){this.handleTypeErrorRun(t,e);return}throw r.createFromBetterSqlite3(n)}}},this.queryFirstOrThrow=e=>{let t=this.queryFirst(e);return e=>{let n=t(e);if(n===void 0)throw new r(`No result`,`NO_RESULT`);return n}},this.queryIterate=e=>{let t=this.db.prepare(e);return e=>e?t.iterate(e):t.iterate()},this.handleTypeErrorRun=(e,t)=>{try{t?e.run(t):e.run()}catch(e){throw r.createFromBetterSqlite3(e)}}}},r=class e extends t{static{this.createFromBetterSqlite3=t=>{let n=new Map([[`SQLITE_CONSTRAINT_UNIQUE`,`UNIQUE_CONSTRAINT`],[`SQLITE_CONSTRAINT_FOREIGNKEY`,`FOREIGNKEY_CONSTRAINT`],[`SQLITE_CONSTRAINT_NOTNULL`,`NOTNULL_CONSTRAINT`],[`SQLITE_CONSTRAINT_CHECK`,`CHECK_CONSTRAINT`],[`SQLITE_CONSTRAINT_PRIMARYKEY`,`PRIMARYKEY_CONSTRAINT`]]);return new e(t.message,n.get(t.code)??`GENERIC`,t)}}};export{n as BetterSqlite3Adapter,r as SchemQlAdapterError,e as SchemQlAdapterErrorCode};