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.62 kB
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./baseAdapterError.cjs");var t=class{constructor(e){this.db=e,this.queryAll=e=>{let t;try{t=this.db.prepare(e)}catch(e){throw n.createFromBetterSqlite3(e)}return e=>{try{return e?t.all(e):t.all()}catch(r){if(r instanceof TypeError&&r.message===`This statement does not return data. Use run() instead`)return this.handleTypeErrorRun(t,e),[];throw n.createFromBetterSqlite3(r)}}},this.queryFirst=e=>{let t;try{t=this.db.prepare(e)}catch(e){throw n.createFromBetterSqlite3(e)}return e=>{try{return e?t.get(e):t.get()}catch(r){if(r instanceof TypeError&&r.message===`This statement does not return data. Use run() instead`){this.handleTypeErrorRun(t,e);return}throw n.createFromBetterSqlite3(r)}}},this.queryFirstOrThrow=e=>{let t=this.queryFirst(e);return e=>{let r=t(e);if(r===void 0)throw new n(`No result`,`NO_RESULT`);return r}},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 n.createFromBetterSqlite3(e)}}}},n=class t extends e.BaseAdapterError{static{this.createFromBetterSqlite3=e=>{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 t(e.message,n.get(e.code)??`GENERIC`,e)}}};exports.BetterSqlite3Adapter=t,exports.SchemQlAdapterError=n,exports.SchemQlAdapterErrorCode=e.AdapterErrorCode;