@a2lix/schemql
Version:
A lightweight TypeScript library that enhances your SQL workflow by combining raw SQL with targeted type safety and schema validation
2 lines (1 loc) • 1.72 kB
JavaScript
var d=Object.defineProperty;var h=(a,c)=>d(a,"name",{value:c,configurable:!0});var i;import{AdapterErrorCode as o,BaseAdapterError as E}from"./baseAdapterError.mjs";const T=class T{constructor(c){this.db=c,this.queryAll=r=>{let e;try{e=this.db.prepare(r)}catch(t){throw s.createFromBetterSqlite3(t)}return t=>{try{return t?e.all(t):e.all()}catch(n){if(n instanceof TypeError&&n.message==="This statement does not return data. Use run() instead")return this.handleTypeErrorRun(e,t),[];throw s.createFromBetterSqlite3(n)}}},this.queryFirst=r=>{let e;try{e=this.db.prepare(r)}catch(t){throw s.createFromBetterSqlite3(t)}return t=>{try{return t?e.get(t):e.get()}catch(n){if(n instanceof TypeError&&n.message==="This statement does not return data. Use run() instead"){this.handleTypeErrorRun(e,t);return}throw s.createFromBetterSqlite3(n)}}},this.queryFirstOrThrow=r=>{const e=this.queryFirst(r);return t=>{const n=e(t);if(n===void 0)throw new s("No result",o.NoResult);return n}},this.queryIterate=r=>{const e=this.db.prepare(r);return t=>t?e.iterate(t):e.iterate()},this.handleTypeErrorRun=(r,e)=>{try{e?r.run(e):r.run()}catch(t){throw s.createFromBetterSqlite3(t)}}}};h(T,"BetterSqlite3Adapter");let u=T;const l=(i=class extends E{},h(i,"_SchemQlAdapterError"),i);l.createFromBetterSqlite3=a=>{const c=new Map([["SQLITE_CONSTRAINT_UNIQUE",o.UniqueConstraint],["SQLITE_CONSTRAINT_FOREIGNKEY",o.ForeignkeyConstraint],["SQLITE_CONSTRAINT_NOTNULL",o.NotnullConstraint],["SQLITE_CONSTRAINT_CHECK",o.CheckConstraint],["SQLITE_CONSTRAINT_PRIMARYKEY",o.PrimarykeyConstraint]]);return new l(a.message,c.get(a.code)??o.Generic,a)};let s=l;export{u as BetterSqlite3Adapter,s as SchemQlAdapterError,o as SchemQlAdapterErrorCode};