@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.22 kB
JavaScript
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.createFromNodeSqlite(e)}return e=>{try{return e?t.all(e):t.all()}catch(e){throw r.createFromNodeSqlite(e)}}},this.queryFirst=e=>{let t;try{t=this.db.prepare(e)}catch(e){throw r.createFromNodeSqlite(e)}return e=>{try{return e?t.get(e):t.get()}catch(e){throw r.createFromNodeSqlite(e)}}},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()}}},r=class e extends t{static{this.createFromNodeSqlite=t=>new e(t.message,(({code:e,message:t})=>{if(e===`ERR_SQLITE_ERROR`){if(t.startsWith(`UNIQUE constraint failed`))return`UNIQUE_CONSTRAINT`;if(t.startsWith(`FOREIGN KEY constraint failed`))return`FOREIGNKEY_CONSTRAINT`;if(t.startsWith(`NOT NULL constraint failed`))return`NOTNULL_CONSTRAINT`;if(t.startsWith(`CHECK constraint failed`))return`CHECK_CONSTRAINT`}return`GENERIC`})(t),t)}};export{n as NodeSqliteAdapter,r as SchemQlAdapterError,e as SchemQlAdapterErrorCode};