effect 4.0.0-beta.63 → 4.0.0-beta.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +2 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/sql/Migrator.d.ts.map +1 -1
- package/dist/unstable/sql/Migrator.js +2 -1
- package/dist/unstable/sql/Migrator.js.map +1 -1
- package/dist/unstable/sql/SqlError.d.ts +23 -3
- package/dist/unstable/sql/SqlError.d.ts.map +1 -1
- package/dist/unstable/sql/SqlError.js +62 -2
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +4 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlModel.js +16 -10
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/package.json +1 -1
- package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +4 -1
- package/src/unstable/sql/Migrator.ts +4 -1
- package/src/unstable/sql/SqlError.ts +72 -1
- package/src/unstable/sql/SqlModel.ts +52 -21
|
@@ -153,7 +153,7 @@ export const makeStorage = options => Effect.gen(function* () {
|
|
|
153
153
|
return sql`
|
|
154
154
|
INSERT INTO ${remoteIdTableSql} (singleton, remote_id)
|
|
155
155
|
VALUES (1, ${created})
|
|
156
|
-
`.pipe(Effect.catchIf(
|
|
156
|
+
`.pipe(Effect.catchIf(isConstraintConflict, () => Effect.void), Effect.andThen(selectRemoteId), Effect.map(rows => rows[0]?.remote_id), Effect.map(persisted => persisted ?? created));
|
|
157
157
|
}));
|
|
158
158
|
const pubsubs = yield* RcMap.make({
|
|
159
159
|
lookup: _storeId => Effect.acquireRelease(PubSub.unbounded(), PubSub.shutdown),
|
|
@@ -352,4 +352,5 @@ const decodeStoreSequence = rows => decodeStoreSequenceRows(rows).pipe(Effect.fl
|
|
|
352
352
|
}));
|
|
353
353
|
const decodeSessionAuthBindings = rows => decodeSessionAuthBindingRows(rows);
|
|
354
354
|
const withTracerDisabled = /*#__PURE__*/Effect.withTracerEnabled(false);
|
|
355
|
+
const isConstraintConflict = error => error.reason._tag === "ConstraintError" || error.reason._tag === "UniqueViolation";
|
|
355
356
|
//# sourceMappingURL=SqlEventLogServerUnencrypted.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlEventLogServerUnencrypted.js","names":["Arr","Effect","Layer","PubSub","RcMap","Schema","Stream","SqlClient","SqlError","Entry","EntryId","makeRemoteIdUnsafe","RemoteEntry","EventLogServerUnencrypted","makeStorage","options","gen","sql","withoutTransforms","entriesTable","entryTablePrefix","remoteIdTable","insertBatchSize","storesTable","sessionAuthBindingsTable","remoteIdTableSql","entriesTableSql","storesTableSql","sessionAuthBindingsTableSql","onDialectOrElse","pg","mysql","mssql","orElse","selectRemoteId","remoteId","pipe","flatMap","rows","existing","undefined","succeed","remote_id","created","catchIf","error","reason","_tag","void","andThen","map","persisted","pubsubs","make","lookup","_storeId","acquireRelease","unbounded","shutdown","idleTimeToLive","ensureStore","storeId","lockStore","decodeStoreSequence","setNextSequence","nextSequence","selectEntriesAfter","startSequence","decodeRemoteEntries","getSessionAuthBinding","publicKey","decodeSessionAuthBindings","row","signing_public_key","orDie","Storage","of","getId","getOrCreateSessionAuthBinding","fnUntraced","signingPublicKey","as","withTransaction","withTracerDisabled","entriesAfter","entry","id","r","write","entries","length","currentNextSequence","committed","rowsForInsert","index","remoteSequence","push","disableChecks","store_id","sequence","entry_id","event","primary_key","primaryKey","payload","insert","pubsub","get","publishAll","scoped","changes","compactors","subscription","subscribe","backlog","compactBacklog","remoteEntries","watermark","fromArray","concat","fromSubscription","filter","unwrap","effect","isSqlError","die","layerStorage","EntrySql","Struct","String","Uint8Array","SqlNumber","Union","Number","NumberFromString","RemoteEntrySql","fields","StoreSequenceSql","next_sequence","SessionAuthBindingSql","public_key","decodeRemoteEntryRows","decodeUnknownEffect","mutable","Array","decodeStoreSequenceRows","decodeSessionAuthBindingRows","toEntry","toRemoteEntry","withTracerEnabled"],"sources":["../../../src/unstable/eventlog/SqlEventLogServerUnencrypted.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,GAAG,MAAM,gBAAgB;AACrC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,SAAS,MAAM,qBAAqB;AAChD,OAAO,KAAKC,QAAQ,MAAM,oBAAoB;AAC9C,SAASC,KAAK,EAAEC,OAAO,EAAEC,kBAAkB,EAAEC,WAAW,QAAuB,mBAAmB;AAClG,OAAO,KAAKC,yBAAyB,MAAM,gCAAgC;AAE3E;;;;AAIA,OAAO,MAAMC,WAAW,GAAIC,OAI3B,IAKCd,MAAM,CAACe,GAAG,CAAC,aAAS;EAClB,MAAMC,GAAG,GAAG,CAAC,OAAOV,SAAS,CAACA,SAAS,EAAEW,iBAAiB,EAAE;EAE5D,MAAMC,YAAY,GAAGJ,OAAO,EAAEK,gBAAgB,IAAI,eAAe;EACjE,MAAMC,aAAa,GAAGN,OAAO,EAAEM,aAAa,IAAI,kBAAkB;EAClE,MAAMC,eAAe,GAAGP,OAAO,EAAEO,eAAe,IAAI,GAAG;EACvD,MAAMC,WAAW,GAAG,GAAGJ,YAAY,SAAS;EAC5C,MAAMK,wBAAwB,GAAG,GAAGL,YAAY,wBAAwB;EAExE,MAAMM,gBAAgB,GAAGR,GAAG,CAACI,aAAa,CAAC;EAC3C,MAAMK,eAAe,GAAGT,GAAG,CAACE,YAAY,CAAC;EACzC,MAAMQ,cAAc,GAAGV,GAAG,CAACM,WAAW,CAAC;EACvC,MAAMK,2BAA2B,GAAGX,GAAG,CAACO,wBAAwB,CAAC;EAEjE,OAAOP,GAAG,CAACY,eAAe,CAAC;IACzBC,EAAE,EAAEA,CAAA,KACFb,GAAG;uCAC4BQ,gBAAgB;;;YAG3C;IACNM,KAAK,EAAEA,CAAA,KACLd,GAAG;uCAC4BQ,gBAAgB;;;YAG3C;IACNO,KAAK,EAAEA,CAAA,KACLf,GAAG;uCAC4BQ,gBAAgB;;;YAG3C;IACNQ,MAAM,EAAEA,CAAA,KACNhB,GAAG;uCAC4BQ,gBAAgB;;;;GAIlD,CAAC;EAEF,OAAOR,GAAG,CAACY,eAAe,CAAC;IACzBC,EAAE,EAAEA,CAAA,KACFb,GAAG;uCAC4BS,eAAe;;;;;;;;;YAS1C;IACNK,KAAK,EAAEA,CAAA,KACLd,GAAG;uCAC4BS,eAAe;;;;;;;;;YAS1C;IACNM,KAAK,EAAEA,CAAA,KACLf,GAAG;uCAC4BS,eAAe;;;;;;;;;YAS1C;IACNO,MAAM,EAAEA,CAAA,KACNhB,GAAG;uCAC4BS,eAAe;;;;;;;;;;GAUjD,CAAC;EAEF,OAAOT,GAAG,CAACY,eAAe,CAAC;IACzBC,EAAE,EAAEA,CAAA,KACFb,GAAG;uCAC4BU,cAAc;;;YAGzC;IACNI,KAAK,EAAEA,CAAA,KACLd,GAAG;uCAC4BU,cAAc;;;YAGzC;IACNK,KAAK,EAAEA,CAAA,KACLf,GAAG;uCAC4BU,cAAc;;;YAGzC;IACNM,MAAM,EAAEA,CAAA,KACNhB,GAAG;uCAC4BU,cAAc;;;;GAIhD,CAAC;EAEF,OAAOV,GAAG,CAACY,eAAe,CAAC;IACzBC,EAAE,EAAEA,CAAA,KACFb,GAAG;uCAC4BW,2BAA2B;;;YAGtD;IACNG,KAAK,EAAEA,CAAA,KACLd,GAAG;uCAC4BW,2BAA2B;;;YAGtD;IACNI,KAAK,EAAEA,CAAA,KACLf,GAAG;uCAC4BW,2BAA2B;;;YAGtD;IACNK,MAAM,EAAEA,CAAA,KACNhB,GAAG;uCAC4BW,2BAA2B;;;;GAI7D,CAAC;EAEF,MAAMM,cAAc,GAAGjB,GAA8B;;aAE5CQ,gBAAgB;;KAExB;EAED,MAAMU,QAAQ,GAAG,OAAOD,cAAc,CAACE,IAAI,CACzCnC,MAAM,CAACoC,OAAO,CAAEC,IAAI,IAAI;IACtB,MAAMC,QAAQ,GAAGD,IAAI,CAAC,CAAC,CAAC;IACxB,IAAIC,QAAQ,KAAKC,SAAS,EAAE;MAC1B,OAAOvC,MAAM,CAACwC,OAAO,CAACF,QAAQ,CAACG,SAAqB,CAAC;IACvD;IAEA,MAAMC,OAAO,GAAGhC,kBAAkB,EAAE;IACpC,OAAOM,GAAG;wBACMQ,gBAAgB;uBACjBkB,OAAO;SACrB,CAACP,IAAI,CACJnC,MAAM,CAAC2C,OAAO,CACXC,KAAwB,IAAKA,KAAK,CAACC,MAAM,CAACC,IAAI,KAAK,iBAAiB,EACrE,MAAM9C,MAAM,CAAC+C,IAAI,CAClB,EACD/C,MAAM,CAACgD,OAAO,CAACf,cAAc,CAAC,EAC9BjC,MAAM,CAACiD,GAAG,CAAEZ,IAAI,IAAKA,IAAI,CAAC,CAAC,CAAC,EAAEI,SAAiC,CAAC,EAChEzC,MAAM,CAACiD,GAAG,CAAEC,SAAS,IAAKA,SAAS,IAAIR,OAAO,CAAC,CAChD;EACH,CAAC,CAAC,CACH;EAED,MAAMS,OAAO,GAAG,OAAOhD,KAAK,CAACiD,IAAI,CAAC;IAChCC,MAAM,EAAGC,QAAgB,IACvBtD,MAAM,CAACuD,cAAc,CACnBrD,MAAM,CAACsD,SAAS,EAAe,EAC/BtD,MAAM,CAACuD,QAAQ,CAChB;IACHC,cAAc,EAAE;GACjB,CAAC;EAEF,MAAMC,WAAW,GAAIC,OAAe,IAClC5C,GAAG,CAACY,eAAe,CAAC;IAClBC,EAAE,EAAEA,CAAA,KACFb,GAAG;0BACaU,cAAc;sBAClBkC,OAAO;;WAElB;IACH9B,KAAK,EAAEA,CAAA,KACLd,GAAG;0BACaU,cAAc;sBAClBkC,OAAO;;WAElB;IACH7B,KAAK,EAAEA,CAAA,KACLf,GAAG;oBACOU,cAAc;4BACNkC,OAAO;;;;;WAKxB;IACH5B,MAAM,EAAEA,CAAA,KACNhB,GAAG;0BACaU,cAAc;sBAClBkC,OAAO;;;GAGtB,CAAC;EAEJ,MAAMC,SAAS,GAAID,OAAe,IAChC5C,GAAG,CAACY,eAAe,CAAC;IAClBC,EAAE,EAAEA,CAAA,KACFb,GAAG;;mBAEMU,cAAc;+BACFkC,OAAO;;WAE3B;IACH9B,KAAK,EAAEA,CAAA,KACLd,GAAG;;mBAEMU,cAAc;+BACFkC,OAAO;;WAE3B;IACH7B,KAAK,EAAEA,CAAA,KACLf,GAAG;;mBAEMU,cAAc;+BACFkC,OAAO;WAC3B;IACH5B,MAAM,EAAEA,CAAA,KACNhB,GAAG;qBACQU,cAAc;;+BAEJkC,OAAO;;;GAG/B,CAAC,CAACzB,IAAI,CACLnC,MAAM,CAACoC,OAAO,CAAC0B,mBAAmB,CAAC,CACpC;EAEH,MAAMC,eAAe,GAAGA,CAACH,OAAe,EAAEI,YAAoB,KAC5DhD,GAAG;iBACQU,cAAc;8BACDsC,YAAY;2BACfJ,OAAO;OAC3B;EAEH,MAAMK,kBAAkB,GAAGA,CAACL,OAAe,EAAEM,aAAqB,KAChElD,GAAG;;eAEMS,eAAe;2BACHmC,OAAO,oBAAoBM,aAAa;;OAE5D,CAAC/B,IAAI,CACJnC,MAAM,CAACoC,OAAO,CAAC+B,mBAAmB,CAAC,CACpC;EAEH,MAAMC,qBAAqB,GAAIC,SAAiB,IAC9CrD,GAAG;;eAEMW,2BAA2B;6BACb0C,SAAS;OAC/B,CAAClC,IAAI,CACJnC,MAAM,CAACoC,OAAO,CAACkC,yBAAyB,CAAC,EACzCtE,MAAM,CAACiD,GAAG,CAAEZ,IAAI,IAAI;IAClB,MAAMkC,GAAG,GAAGlC,IAAI,CAAC,CAAC,CAAC;IACnB,OAAOkC,GAAG,KAAKhC,SAAS,GAAGA,SAAS,GAAGgC,GAAG,CAACC,kBAA6C;EAC1F,CAAC,CAAC,EACFxE,MAAM,CAACyE,KAAK,CACb;EAEH,OAAO7D,yBAAyB,CAAC8D,OAAO,CAACC,EAAE,CAAC;IAC1CC,KAAK,EAAE5E,MAAM,CAACwC,OAAO,CAACN,QAAQ,CAAC;IAC/B2C,6BAA6B,EAAE7E,MAAM,CAAC8E,UAAU,CAC9C,WAAUT,SAAS,EAAEU,gBAAgB;MACnC,MAAMzC,QAAQ,GAAG,OAAO8B,qBAAqB,CAACC,SAAS,CAAC;MACxD,IAAI/B,QAAQ,KAAKC,SAAS,EAAE;QAC1B,OAAOD,QAAQ;MACjB;MACA,OAAO,OAAOtB,GAAG;0BACDW,2BAA2B;sBAC/B0C,SAAS,KAAKU,gBAAgB;WACzC,CAAC5C,IAAI,CACJnC,MAAM,CAACgF,EAAE,CAACD,gBAAgB,CAAC,CAC5B;IACH,CAAC,EACD/D,GAAG,CAACiE,eAAe,EACnBjF,MAAM,CAACyE,KAAK,EACZS,kBAAkB,CACnB;IACDC,YAAY,EAAEA,CAACvB,OAAO,EAAEwB,KAAK,KAC3BpE,GAAG;;iBAEMS,eAAe;6BACHmC,OAAO,oBAAoBwB,KAAK,CAACC,EAAE;;SAEvD,CAAClD,IAAI,CACJnC,MAAM,CAACoC,OAAO,CAAC+B,mBAAmB,CAAC,EACnCnE,MAAM,CAACiD,GAAG,CAAClD,GAAG,CAACkD,GAAG,CAAEqC,CAAC,IAAKA,CAAC,CAACF,KAAK,CAAC,CAAC,EACnCpF,MAAM,CAACyE,KAAK,EACZS,kBAAkB,CACnB;IACHK,KAAK,EAAEvF,MAAM,CAAC8E,UAAU,CACtB,WAAUlB,OAAO,EAAE4B,OAAO;MACxB,IAAIA,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,EAAE;MACX;MAEA,OAAO9B,WAAW,CAACC,OAAO,CAAC;MAC3B,MAAM8B,mBAAmB,GAAG,OAAO7B,SAAS,CAACD,OAAO,CAAC;MAErD,MAAM+B,SAAS,GAAuB,EAAE;MACxC,IAAIC,aAAa,GAOZ,EAAE;MAEP,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGL,OAAO,CAACC,MAAM,EAAEI,KAAK,EAAE,EAAE;QACnD,MAAMT,KAAK,GAAGI,OAAO,CAACK,KAAK,CAAC;QAC5B,MAAMC,cAAc,GAAGJ,mBAAmB,GAAGG,KAAK;QAClDF,SAAS,CAACI,IAAI,CACZ,IAAIpF,WAAW,CAAC;UACdmF,cAAc;UACdV;SACD,EAAE;UAAEY,aAAa,EAAE;QAAI,CAAE,CAAC,CAC5B;QACDJ,aAAa,CAACG,IAAI,CAAC;UACjBE,QAAQ,EAAErC,OAAO;UACjBsC,QAAQ,EAAEJ,cAAc;UACxBK,QAAQ,EAAEf,KAAK,CAACC,EAAE;UAClBe,KAAK,EAAEhB,KAAK,CAACgB,KAAK;UAClBC,WAAW,EAAEjB,KAAK,CAACkB,UAAU;UAC7BC,OAAO,EAAEnB,KAAK,CAACmB;SAChB,CAAC;QACF,IAAIX,aAAa,CAACH,MAAM,IAAIpE,eAAe,EAAE;UAC3C,OAAOL,GAAG,eAAeS,eAAe,IAAIT,GAAG,CAACwF,MAAM,CAACZ,aAAa,CAAC,EAAE;UACvEA,aAAa,GAAG,EAAE;QACpB;MACF;MACA,IAAIA,aAAa,CAACH,MAAM,GAAG,CAAC,EAAE;QAC5B,OAAOzE,GAAG,eAAeS,eAAe,IAAIT,GAAG,CAACwF,MAAM,CAACZ,aAAa,CAAC,EAAE;MACzE;MACA,MAAM5B,YAAY,GAAG0B,mBAAmB,GAAGF,OAAO,CAACC,MAAM;MACzD,OAAO1B,eAAe,CAACH,OAAO,EAAEI,YAAY,CAAC;MAE7C,MAAMyC,MAAM,GAAG,OAAOtG,KAAK,CAACuG,GAAG,CAACvD,OAAO,EAAES,OAAO,CAAC;MACjD,OAAO1D,MAAM,CAACyG,UAAU,CAACF,MAAM,EAAEd,SAAS,CAAC;MAE3C,OAAOA,SAAS;IAClB,CAAC,EACD3F,MAAM,CAAC4G,MAAM,EACb5F,GAAG,CAACiE,eAAe,EACnBC,kBAAkB,EAClBlF,MAAM,CAACyE,KAAK,CACb;IACDoC,OAAO,EAAE7G,MAAM,CAAC8E,UAAU,CACxB,WAAU;MAAElB,OAAO;MAAEM,aAAa;MAAE4C;IAAU,CAAE;MAC9C,MAAML,MAAM,GAAG,OAAOtG,KAAK,CAACuG,GAAG,CAACvD,OAAO,EAAES,OAAO,CAAC;MACjD,MAAMmD,YAAY,GAAG,OAAO7G,MAAM,CAAC8G,SAAS,CAACP,MAAM,CAAC;MACpD,MAAMQ,OAAO,GAAG,OAAOrG,yBAAyB,CAACsG,cAAc,CAAC;QAC9DJ,UAAU;QACVK,aAAa,EAAE,OAAOlD,kBAAkB,CAACL,OAAO,EAAEM,aAAa;OAChE,CAAC;MACF,IAAIkD,SAAS,GAAGH,OAAO,CAACxB,MAAM,GAAG,CAAC,GAAGwB,OAAO,CAACA,OAAO,CAACxB,MAAM,GAAG,CAAC,CAAE,CAACK,cAAc,GAAG5B,aAAa,GAAG,CAAC;MAEpG,OAAO7D,MAAM,CAACgH,SAAS,CAACJ,OAAO,CAAC,CAAC9E,IAAI,CACnC9B,MAAM,CAACiH,MAAM,CACXjH,MAAM,CAACkH,gBAAgB,CAACR,YAAY,CAAC,CAAC5E,IAAI,CACxC9B,MAAM,CAACmH,MAAM,CAAEpC,KAAK,IAAKA,KAAK,CAACU,cAAc,GAAGsB,SAAS,CAAC,CAC3D,CACF,CACF;IACH,CAAC,EACDpH,MAAM,CAACyE,KAAK,EACZS,kBAAkB,EAClB7E,MAAM,CAACoH,MAAM,CACd;IACDxC,eAAe,EAAGyC,MAAM,IACtB1G,GAAG,CAACiE,eAAe,CAACyC,MAAM,CAAC,CAACvF,IAAI,CAC9BnC,MAAM,CAAC2C,OAAO,CAACpC,QAAQ,CAACoH,UAAU,EAAE3H,MAAM,CAAC4H,GAAG,CAAC;GAEpD,CAAC;AACJ,CAAC,CAAC,CAACzF,IAAI,CAAC+C,kBAAkB,CAAC;AAE7B;;;;AAIA,OAAO,MAAM2C,YAAY,GAAI/G,OAI5B,IACCb,KAAK,CAACyH,MAAM,CAAC9G,yBAAyB,CAAC8D,OAAO,CAAC,CAAC7D,WAAW,CAACC,OAAO,CAAC,CAAC;AAEvE,MAAMgH,QAAQ,gBAAG1H,MAAM,CAAC2H,MAAM,CAAC;EAC7B5B,QAAQ,EAAE1F,OAAO;EACjB2F,KAAK,EAAEhG,MAAM,CAAC4H,MAAM;EACpB3B,WAAW,EAAEjG,MAAM,CAAC4H,MAAM;EAC1BzB,OAAO,EAAEnG,MAAM,CAAC6H;CACjB,CAAC;AAIF,MAAMC,SAAS,gBAAG9H,MAAM,CAAC+H,KAAK,CAAC,CAAC/H,MAAM,CAACgI,MAAM,EAAEhI,MAAM,CAACiI,gBAAgB,CAAC,CAAC;AAExE,MAAMC,cAAc,gBAAGlI,MAAM,CAAC2H,MAAM,CAAC;EACnC,GAAGD,QAAQ,CAACS,MAAM;EAClBrC,QAAQ,EAAEgC;CACX,CAAC;AAIF,MAAMM,gBAAgB,gBAAGpI,MAAM,CAAC2H,MAAM,CAAC;EACrCU,aAAa,EAAEP;CAChB,CAAC;AAEF,MAAMQ,qBAAqB,gBAAGtI,MAAM,CAAC2H,MAAM,CAAC;EAC1CY,UAAU,EAAEvI,MAAM,CAAC4H,MAAM;EACzBxD,kBAAkB,EAAEpE,MAAM,CAAC6H;CAC5B,CAAC;AAIF,MAAMW,qBAAqB,gBAAGxI,MAAM,CAACyI,mBAAmB,cAACzI,MAAM,CAAC0I,OAAO,cAAC1I,MAAM,CAAC2I,KAAK,CAACT,cAAc,CAAC,CAAC,CAAC;AACtG,MAAMU,uBAAuB,gBAAG5I,MAAM,CAACyI,mBAAmB,cAACzI,MAAM,CAAC2I,KAAK,CAACP,gBAAgB,CAAC,CAAC;AAC1F,MAAMS,4BAA4B,gBAAG7I,MAAM,CAACyI,mBAAmB,cAACzI,MAAM,CAAC2I,KAAK,CAACL,qBAAqB,CAAC,CAAC;AAEpG,MAAMQ,OAAO,GAAI3E,GAAa,IAC5B,IAAI/D,KAAK,CAAC;EACR6E,EAAE,EAAEd,GAAG,CAAC4B,QAAQ;EAChBC,KAAK,EAAE7B,GAAG,CAAC6B,KAAK;EAChBE,UAAU,EAAE/B,GAAG,CAAC8B,WAAW;EAC3BE,OAAO,EAAEhC,GAAG,CAACgC;CACd,EAAE;EAAEP,aAAa,EAAE;AAAI,CAAE,CAAC;AAE7B,MAAMmD,aAAa,GAAI5E,GAAmB,IACxC,IAAI5D,WAAW,CAAC;EACdmF,cAAc,EAAEvB,GAAG,CAAC2B,QAAQ;EAC5Bd,KAAK,EAAE8D,OAAO,CAAC3E,GAAG;CACnB,EAAE;EAAEyB,aAAa,EAAE;AAAI,CAAE,CAAC;AAE7B,MAAM7B,mBAAmB,GACvB9B,IAAa,IAEbuG,qBAAqB,CAACvG,IAAI,CAAC,CAACF,IAAI,CAC9BnC,MAAM,CAACiD,GAAG,CAAEZ,IAAI,IAAKA,IAAI,CAACY,GAAG,CAACkG,aAAa,CAAC,CAAC,CAC9C;AAEH,MAAMrF,mBAAmB,GAAIzB,IAAa,IACxC2G,uBAAuB,CAAC3G,IAAI,CAAC,CAACF,IAAI,CAChCnC,MAAM,CAACoC,OAAO,CAAEC,IAAI,IAAI;EACtB,MAAMkC,GAAG,GAAGlC,IAAI,CAAC,CAAC,CAAC;EACnB,IAAIkC,GAAG,KAAKhC,SAAS,EAAE;IACrB,OAAOvC,MAAM,CAAC4H,GAAG,CAAC,yDAAyD,CAAC;EAC9E;EACA,OAAO5H,MAAM,CAACwC,OAAO,CAAC+B,GAAG,CAACkE,aAAa,CAAC;AAC1C,CAAC,CAAC,CACH;AAEH,MAAMnE,yBAAyB,GAC7BjC,IAAa,IAC+D4G,4BAA4B,CAAC5G,IAAI,CAAC;AAEhH,MAAM6C,kBAAkB,gBAAGlF,MAAM,CAACoJ,iBAAiB,CAAC,KAAK,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SqlEventLogServerUnencrypted.js","names":["Arr","Effect","Layer","PubSub","RcMap","Schema","Stream","SqlClient","SqlError","Entry","EntryId","makeRemoteIdUnsafe","RemoteEntry","EventLogServerUnencrypted","makeStorage","options","gen","sql","withoutTransforms","entriesTable","entryTablePrefix","remoteIdTable","insertBatchSize","storesTable","sessionAuthBindingsTable","remoteIdTableSql","entriesTableSql","storesTableSql","sessionAuthBindingsTableSql","onDialectOrElse","pg","mysql","mssql","orElse","selectRemoteId","remoteId","pipe","flatMap","rows","existing","undefined","succeed","remote_id","created","catchIf","isConstraintConflict","void","andThen","map","persisted","pubsubs","make","lookup","_storeId","acquireRelease","unbounded","shutdown","idleTimeToLive","ensureStore","storeId","lockStore","decodeStoreSequence","setNextSequence","nextSequence","selectEntriesAfter","startSequence","decodeRemoteEntries","getSessionAuthBinding","publicKey","decodeSessionAuthBindings","row","signing_public_key","orDie","Storage","of","getId","getOrCreateSessionAuthBinding","fnUntraced","signingPublicKey","as","withTransaction","withTracerDisabled","entriesAfter","entry","id","r","write","entries","length","currentNextSequence","committed","rowsForInsert","index","remoteSequence","push","disableChecks","store_id","sequence","entry_id","event","primary_key","primaryKey","payload","insert","pubsub","get","publishAll","scoped","changes","compactors","subscription","subscribe","backlog","compactBacklog","remoteEntries","watermark","fromArray","concat","fromSubscription","filter","unwrap","effect","isSqlError","die","layerStorage","EntrySql","Struct","String","Uint8Array","SqlNumber","Union","Number","NumberFromString","RemoteEntrySql","fields","StoreSequenceSql","next_sequence","SessionAuthBindingSql","public_key","decodeRemoteEntryRows","decodeUnknownEffect","mutable","Array","decodeStoreSequenceRows","decodeSessionAuthBindingRows","toEntry","toRemoteEntry","withTracerEnabled","error","reason","_tag"],"sources":["../../../src/unstable/eventlog/SqlEventLogServerUnencrypted.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migrator.d.ts","sourceRoot":"","sources":["../../../src/unstable/sql/Migrator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAIhD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAC3C,aAAa,CAAC,iBAAiB,CAAC,EAChC,cAAc,EACd,CAAC,CACF,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS;IACvC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;CAChD,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CACzB;;;;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,IAAI,EACT,UAAU,GACV,aAAa,GACb,QAAQ,GACR,YAAY,GACZ,QAAQ,CAAA;IACZ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,EAAE,GAAG,KAAK,EAAE,gBAE9B;IACD,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,KACpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;CAC7C,MACA,EAAE,GAAG,KAAK,EAAE,oCAIV,eAAe,CAAC,EAAE,CAAC,KAAG,MAAM,CAAC,MAAM,CACpC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,cAAc,GAAG,QAAQ,EACzB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,CA+MxB,CAAA;
|
|
1
|
+
{"version":3,"file":"Migrator.d.ts","sourceRoot":"","sources":["../../../src/unstable/sql/Migrator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAIhD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAC3C,aAAa,CAAC,iBAAiB,CAAC,EAChC,cAAc,EACd,CAAC,CACF,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS;IACvC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;CAChD,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CACzB;;;;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,IAAI,EACT,UAAU,GACV,aAAa,GACb,QAAQ,GACR,YAAY,GACZ,QAAQ,CAAA;IACZ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,EAAE,GAAG,KAAK,EAAE,gBAE9B;IACD,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,KACpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;CAC7C,MACA,EAAE,GAAG,KAAK,EAAE,oCAIV,eAAe,CAAC,EAAE,CAAC,KAAG,MAAM,CAAC,MAAM,CACpC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,cAAc,GAAG,QAAQ,EACzB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,CA+MxB,CAAA;AAOJ;;;GAGG;AACH,eAAO,MAAM,QAAQ,GACnB,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAC7C,MAaA,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAa7D,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,KAAG,MAarG,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,UAAU,CAkCnE,CAAA"}
|
|
@@ -111,7 +111,7 @@ export const make = ({
|
|
|
111
111
|
required.push([currentId, currentName, yield* loadMigration(resolved)]);
|
|
112
112
|
}
|
|
113
113
|
if (required.length > 0) {
|
|
114
|
-
yield* pipe(insertMigrations(required.map(([id, name]) => [id, name])), Effect.mapError(error => error
|
|
114
|
+
yield* pipe(insertMigrations(required.map(([id, name]) => [id, name])), Effect.mapError(error => isConstraintConflict(error) ? new MigrationError({
|
|
115
115
|
kind: "Locked",
|
|
116
116
|
message: "Migrations already running"
|
|
117
117
|
}) : error));
|
|
@@ -133,6 +133,7 @@ export const make = ({
|
|
|
133
133
|
return completed;
|
|
134
134
|
});
|
|
135
135
|
const migrationOrder = /*#__PURE__*/Order.make(([a], [b]) => Order.Number(a, b));
|
|
136
|
+
const isConstraintConflict = error => error.reason._tag === "ConstraintError" || error.reason._tag === "UniqueViolation";
|
|
136
137
|
/**
|
|
137
138
|
* @since 4.0.0
|
|
138
139
|
* @category loaders
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migrator.js","names":["Arr","Data","Effect","FileSystem","pipe","Option","Order","Client","MigrationError","TaggedError","make","dumpSchema","void","loader","schemaDirectory","table","gen","sql","SqlClient","ensureMigrationsTable","onDialectOrElse","mssql","literal","mysql","pg","catch","asEffect","orElse","insertMigrations","rows","insert","map","migration_id","name","withoutTransform","latestMigration","_","fromNullishOr","created_at","id","createdAt","loadMigration","load","catchDefect","fail","kind","message","flatMap","isEffect","succeed","default","filterOrFail","runMigration","effect","error","die","cause","run","latestMigrationId","current","all","match","onNone","onSome","Set","size","length","required","resolved","currentId","currentName","push","mapError","
|
|
1
|
+
{"version":3,"file":"Migrator.js","names":["Arr","Data","Effect","FileSystem","pipe","Option","Order","Client","MigrationError","TaggedError","make","dumpSchema","void","loader","schemaDirectory","table","gen","sql","SqlClient","ensureMigrationsTable","onDialectOrElse","mssql","literal","mysql","pg","catch","asEffect","orElse","insertMigrations","rows","insert","map","migration_id","name","withoutTransform","latestMigration","_","fromNullishOr","created_at","id","createdAt","loadMigration","load","catchDefect","fail","kind","message","flatMap","isEffect","succeed","default","filterOrFail","runMigration","effect","error","die","cause","run","latestMigrationId","current","all","match","onNone","onSome","Set","size","length","required","resolved","currentId","currentName","push","mapError","isConstraintConflict","forEach","logDebug","annotateLogs","String","withSpan","discard","toString","completed","withTransaction","catchTag","as","catchCause","logInfo","migrationOrder","a","b","Number","reason","_tag","fromGlob","migrations","Object","keys","flatMapNullishOr","key","promise","sort","fromBabelGlob","fromRecord","fromFileSystem","fnUntraced","directory","Fs","files","readDirectory","file","basename","__rewriteRelativeImportExtension"],"sources":["../../../src/unstable/sql/Migrator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -73,6 +73,25 @@ export declare class SqlSyntaxError extends SqlSyntaxError_base {
|
|
|
73
73
|
*/
|
|
74
74
|
get isRetryable(): boolean;
|
|
75
75
|
}
|
|
76
|
+
declare const UniqueViolation_base: Schema.Class<UniqueViolation, Schema.TaggedStruct<"UniqueViolation", {
|
|
77
|
+
constraint: Schema.String;
|
|
78
|
+
cause: Schema.Defect;
|
|
79
|
+
message: Schema.optional<Schema.String>;
|
|
80
|
+
operation: Schema.optional<Schema.String>;
|
|
81
|
+
}>, import("../../Cause.ts").YieldableError>;
|
|
82
|
+
/**
|
|
83
|
+
* @since 4.0.0
|
|
84
|
+
*/
|
|
85
|
+
export declare class UniqueViolation extends UniqueViolation_base {
|
|
86
|
+
/**
|
|
87
|
+
* @since 4.0.0
|
|
88
|
+
*/
|
|
89
|
+
readonly [ReasonTypeId]: "~effect/sql/SqlError/Reason";
|
|
90
|
+
/**
|
|
91
|
+
* @since 4.0.0
|
|
92
|
+
*/
|
|
93
|
+
get isRetryable(): boolean;
|
|
94
|
+
}
|
|
76
95
|
declare const ConstraintError_base: Schema.Class<ConstraintError, Schema.TaggedStruct<"ConstraintError", {
|
|
77
96
|
cause: Schema.Defect;
|
|
78
97
|
message: Schema.optional<Schema.String>;
|
|
@@ -184,7 +203,7 @@ export declare class UnknownError extends UnknownError_base {
|
|
|
184
203
|
/**
|
|
185
204
|
* @since 4.0.0
|
|
186
205
|
*/
|
|
187
|
-
export type SqlErrorReason = ConnectionError | AuthenticationError | AuthorizationError | SqlSyntaxError | ConstraintError | DeadlockError | SerializationError | LockTimeoutError | StatementTimeoutError | UnknownError;
|
|
206
|
+
export type SqlErrorReason = ConnectionError | AuthenticationError | AuthorizationError | SqlSyntaxError | UniqueViolation | ConstraintError | DeadlockError | SerializationError | LockTimeoutError | StatementTimeoutError | UnknownError;
|
|
188
207
|
/**
|
|
189
208
|
* @since 4.0.0
|
|
190
209
|
*/
|
|
@@ -193,6 +212,7 @@ export declare const SqlErrorReason: Schema.Union<[
|
|
|
193
212
|
typeof AuthenticationError,
|
|
194
213
|
typeof AuthorizationError,
|
|
195
214
|
typeof SqlSyntaxError,
|
|
215
|
+
typeof UniqueViolation,
|
|
196
216
|
typeof ConstraintError,
|
|
197
217
|
typeof DeadlockError,
|
|
198
218
|
typeof SerializationError,
|
|
@@ -201,7 +221,7 @@ export declare const SqlErrorReason: Schema.Union<[
|
|
|
201
221
|
typeof UnknownError
|
|
202
222
|
]>;
|
|
203
223
|
declare const SqlError_base: Schema.Class<SqlError, Schema.TaggedStruct<"SqlError", {
|
|
204
|
-
readonly reason: Schema.Union<[typeof ConnectionError, typeof AuthenticationError, typeof AuthorizationError, typeof SqlSyntaxError, typeof ConstraintError, typeof DeadlockError, typeof SerializationError, typeof LockTimeoutError, typeof StatementTimeoutError, typeof UnknownError]>;
|
|
224
|
+
readonly reason: Schema.Union<[typeof ConnectionError, typeof AuthenticationError, typeof AuthorizationError, typeof SqlSyntaxError, typeof UniqueViolation, typeof ConstraintError, typeof DeadlockError, typeof SerializationError, typeof LockTimeoutError, typeof StatementTimeoutError, typeof UnknownError]>;
|
|
205
225
|
}>, import("../../Cause.ts").YieldableError>;
|
|
206
226
|
/**
|
|
207
227
|
* @since 4.0.0
|
|
@@ -214,7 +234,7 @@ export declare class SqlError extends SqlError_base {
|
|
|
214
234
|
/**
|
|
215
235
|
* @since 4.0.0
|
|
216
236
|
*/
|
|
217
|
-
readonly cause: ConnectionError | AuthenticationError | AuthorizationError | SqlSyntaxError | ConstraintError | DeadlockError | SerializationError | LockTimeoutError | StatementTimeoutError | UnknownError;
|
|
237
|
+
readonly cause: ConnectionError | AuthenticationError | AuthorizationError | SqlSyntaxError | UniqueViolation | ConstraintError | DeadlockError | SerializationError | LockTimeoutError | StatementTimeoutError | UnknownError;
|
|
218
238
|
/**
|
|
219
239
|
* @since 4.0.0
|
|
220
240
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlError.d.ts","sourceRoot":"","sources":["../../../src/unstable/sql/SqlError.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,QAAA,MAAM,MAAM,EAAG,sBAA+B,CAAA;AAC9C,QAAA,MAAM,YAAY,EAAG,6BAAsC,CAAA;;;;;;AAQ3D;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBAGpC;IACC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAEH;IACpC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,uBAEH;IACnC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAGnC;IACC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBAGpC;IACC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,kBAGlC;IACC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,uBAEH;IACnC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,qBAGrC;IACC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,0BAEH;IACtC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;;;;;;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAGjC;IACC;;OAEG;IACH,QAAQ,CAAC,CAAC,YAAY,CAAC,gCAAe;IAEtC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,cAAc,GACd,eAAe,GACf,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,YAAY,CAAA;AAEhB;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC;IACxC,OAAO,eAAe;IACtB,OAAO,mBAAmB;IAC1B,OAAO,kBAAkB;IACzB,OAAO,cAAc;IACrB,OAAO,eAAe;IACtB,OAAO,aAAa;IACpB,OAAO,kBAAkB;IACzB,OAAO,gBAAgB;IACvB,OAAO,qBAAqB;IAC5B,OAAO,YAAY;CACpB,
|
|
1
|
+
{"version":3,"file":"SqlError.d.ts","sourceRoot":"","sources":["../../../src/unstable/sql/SqlError.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,25 @@ export class SqlSyntaxError extends /*#__PURE__*/Schema.TaggedErrorClass("effect
|
|
|
70
70
|
return false;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
const UniqueViolationFields = {
|
|
74
|
+
...ReasonFields,
|
|
75
|
+
constraint: Schema.String
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* @since 4.0.0
|
|
79
|
+
*/
|
|
80
|
+
export class UniqueViolation extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/UniqueViolation")("UniqueViolation", UniqueViolationFields) {
|
|
81
|
+
/**
|
|
82
|
+
* @since 4.0.0
|
|
83
|
+
*/
|
|
84
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
85
|
+
/**
|
|
86
|
+
* @since 4.0.0
|
|
87
|
+
*/
|
|
88
|
+
get isRetryable() {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
73
92
|
/**
|
|
74
93
|
* @since 4.0.0
|
|
75
94
|
*/
|
|
@@ -163,7 +182,7 @@ export class UnknownError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/s
|
|
|
163
182
|
/**
|
|
164
183
|
* @since 4.0.0
|
|
165
184
|
*/
|
|
166
|
-
export const SqlErrorReason = /*#__PURE__*/Schema.Union([ConnectionError, AuthenticationError, AuthorizationError, SqlSyntaxError, ConstraintError, DeadlockError, SerializationError, LockTimeoutError, StatementTimeoutError, UnknownError]);
|
|
185
|
+
export const SqlErrorReason = /*#__PURE__*/Schema.Union([ConnectionError, AuthenticationError, AuthorizationError, SqlSyntaxError, UniqueViolation, ConstraintError, DeadlockError, SerializationError, LockTimeoutError, StatementTimeoutError, UnknownError]);
|
|
167
186
|
/**
|
|
168
187
|
* @since 4.0.0
|
|
169
188
|
*/
|
|
@@ -217,7 +236,42 @@ const sqliteNumericCodeFromCause = cause => {
|
|
|
217
236
|
const errno = cause.errno;
|
|
218
237
|
return typeof errno === "number" ? errno : undefined;
|
|
219
238
|
};
|
|
239
|
+
const matchesSqliteNumericCode = (cause, expected) => {
|
|
240
|
+
const code = sqliteCodeFromCause(cause);
|
|
241
|
+
if (code === expected) {
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
if (!Predicate.hasProperty(cause, "errno")) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
return cause.errno === expected;
|
|
248
|
+
};
|
|
220
249
|
const matchesSqliteCode = (code, expected) => code === expected || code.startsWith(expected + "_");
|
|
250
|
+
const UNKNOWN_CONSTRAINT = "unknown";
|
|
251
|
+
const SQLITE_CONSTRAINT_UNIQUE = "SQLITE_CONSTRAINT_UNIQUE";
|
|
252
|
+
const SQLITE_CONSTRAINT_UNIQUE_CODE = 2067;
|
|
253
|
+
const normalizeConstraintIdentifier = identifier => {
|
|
254
|
+
if (typeof identifier !== "string") {
|
|
255
|
+
return UNKNOWN_CONSTRAINT;
|
|
256
|
+
}
|
|
257
|
+
const trimmed = identifier.trim();
|
|
258
|
+
return trimmed.length === 0 ? UNKNOWN_CONSTRAINT : trimmed;
|
|
259
|
+
};
|
|
260
|
+
const sqliteUniqueConstraintFromCause = cause => {
|
|
261
|
+
if (Predicate.hasProperty(cause, "constraint")) {
|
|
262
|
+
return normalizeConstraintIdentifier(cause.constraint);
|
|
263
|
+
}
|
|
264
|
+
if (!Predicate.hasProperty(cause, "message")) {
|
|
265
|
+
return UNKNOWN_CONSTRAINT;
|
|
266
|
+
}
|
|
267
|
+
const message = cause.message;
|
|
268
|
+
if (typeof message !== "string") {
|
|
269
|
+
return UNKNOWN_CONSTRAINT;
|
|
270
|
+
}
|
|
271
|
+
const prefix = "UNIQUE constraint failed:";
|
|
272
|
+
const index = message.indexOf(prefix);
|
|
273
|
+
return index === -1 ? UNKNOWN_CONSTRAINT : normalizeConstraintIdentifier(message.slice(index + prefix.length));
|
|
274
|
+
};
|
|
221
275
|
/**
|
|
222
276
|
* @since 4.0.0
|
|
223
277
|
*/
|
|
@@ -231,6 +285,13 @@ export const classifySqliteError = (cause, {
|
|
|
231
285
|
operation
|
|
232
286
|
};
|
|
233
287
|
const code = sqliteCodeFromCause(cause);
|
|
288
|
+
const numericCode = sqliteNumericCodeFromCause(cause);
|
|
289
|
+
if (code === SQLITE_CONSTRAINT_UNIQUE || matchesSqliteNumericCode(cause, SQLITE_CONSTRAINT_UNIQUE_CODE)) {
|
|
290
|
+
return new UniqueViolation({
|
|
291
|
+
...props,
|
|
292
|
+
constraint: sqliteUniqueConstraintFromCause(cause)
|
|
293
|
+
});
|
|
294
|
+
}
|
|
234
295
|
if (typeof code === "string") {
|
|
235
296
|
if (matchesSqliteCode(code, "SQLITE_AUTH")) {
|
|
236
297
|
return new AuthenticationError(props);
|
|
@@ -248,7 +309,6 @@ export const classifySqliteError = (cause, {
|
|
|
248
309
|
return new ConnectionError(props);
|
|
249
310
|
}
|
|
250
311
|
}
|
|
251
|
-
const numericCode = sqliteNumericCodeFromCause(cause);
|
|
252
312
|
if (typeof numericCode === "number") {
|
|
253
313
|
const code = numericCode & 0xff;
|
|
254
314
|
switch (code) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlError.js","names":["Predicate","Schema","TypeId","ReasonTypeId","ReasonFields","cause","Defect","message","optional","String","operation","ConnectionError","TaggedErrorClass","isRetryable","AuthenticationError","AuthorizationError","SqlSyntaxError","ConstraintError","DeadlockError","SerializationError","LockTimeoutError","StatementTimeoutError","UnknownError","SqlErrorReason","Union","SqlError","reason","_tag","isSqlError","u","hasProperty","isSqlErrorReason","sqliteCodeFromCause","undefined","code","sqliteNumericCodeFromCause","errno","
|
|
1
|
+
{"version":3,"file":"SqlError.js","names":["Predicate","Schema","TypeId","ReasonTypeId","ReasonFields","cause","Defect","message","optional","String","operation","ConnectionError","TaggedErrorClass","isRetryable","AuthenticationError","AuthorizationError","SqlSyntaxError","UniqueViolationFields","constraint","UniqueViolation","ConstraintError","DeadlockError","SerializationError","LockTimeoutError","StatementTimeoutError","UnknownError","SqlErrorReason","Union","SqlError","reason","_tag","isSqlError","u","hasProperty","isSqlErrorReason","sqliteCodeFromCause","undefined","code","sqliteNumericCodeFromCause","errno","matchesSqliteNumericCode","expected","matchesSqliteCode","startsWith","UNKNOWN_CONSTRAINT","SQLITE_CONSTRAINT_UNIQUE","SQLITE_CONSTRAINT_UNIQUE_CODE","normalizeConstraintIdentifier","identifier","trimmed","trim","length","sqliteUniqueConstraintFromCause","prefix","index","indexOf","slice","classifySqliteError","props","numericCode","ResultLengthMismatch","Number","actual"],"sources":["../../../src/unstable/sql/SqlError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -17,10 +17,11 @@ import * as SqlResolver from "./SqlResolver.ts";
|
|
|
17
17
|
* @since 4.0.0
|
|
18
18
|
* @category repository
|
|
19
19
|
*/
|
|
20
|
-
export declare const makeRepository: <S extends Model.Any, Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"])>(Model: S, options: {
|
|
20
|
+
export declare const makeRepository: <S extends Model.Any, Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"]), SoftDelete extends keyof S["fields"] = never>(Model: S, options: {
|
|
21
21
|
readonly tableName: string;
|
|
22
22
|
readonly spanPrefix: string;
|
|
23
23
|
readonly idColumn: Id;
|
|
24
|
+
readonly softDeleteColumn?: SoftDelete | undefined;
|
|
24
25
|
}) => Effect.Effect<{
|
|
25
26
|
readonly insert: (insert: S["insert"]["Type"]) => Effect.Effect<S["Type"], Schema.SchemaError | SqlError, S["DecodingServices"] | S["insert"]["EncodingServices"]>;
|
|
26
27
|
readonly insertVoid: (insert: S["insert"]["Type"]) => Effect.Effect<void, Schema.SchemaError | SqlError, S["insert"]["EncodingServices"]>;
|
|
@@ -35,10 +36,11 @@ export declare const makeRepository: <S extends Model.Any, Id extends (keyof S["
|
|
|
35
36
|
* @since 4.0.0
|
|
36
37
|
* @category repository
|
|
37
38
|
*/
|
|
38
|
-
export declare const makeResolvers: <S extends Model.Any, Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"])>(Model: S, options: {
|
|
39
|
+
export declare const makeResolvers: <S extends Model.Any, Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"]), SoftDelete extends keyof S["fields"] = never>(Model: S, options: {
|
|
39
40
|
readonly tableName: string;
|
|
40
41
|
readonly spanPrefix: string;
|
|
41
42
|
readonly idColumn: Id;
|
|
43
|
+
readonly softDeleteColumn?: SoftDelete | undefined;
|
|
42
44
|
}) => Effect.Effect<{
|
|
43
45
|
readonly insert: RequestResolver.RequestResolver<SqlResolver.SqlRequest<S["insert"]["Type"], S["Type"], ResultLengthMismatch | SqlError, S["insert"]["EncodingServices"]>>;
|
|
44
46
|
readonly insertVoid: RequestResolver.RequestResolver<SqlResolver.SqlRequest<S["insert"]["Type"], void, SqlError, S["insert"]["EncodingServices"]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlModel.d.ts","sourceRoot":"","sources":["../../../src/unstable/sql/SqlModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAG/C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,CAAC,SAAS,KAAK,CAAC,GAAG,EACnB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAChF,OAAO,CAAC,EAAE,SAAS;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"SqlModel.d.ts","sourceRoot":"","sources":["../../../src/unstable/sql/SqlModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,15 @@ export const makeRepository = (Model, options) => Effect.gen(function* () {
|
|
|
13
13
|
const sql = yield* SqlClient;
|
|
14
14
|
const idSchema = Model.fields[options.idColumn];
|
|
15
15
|
const idColumn = options.idColumn;
|
|
16
|
+
const softDeleteColumn = options.softDeleteColumn;
|
|
17
|
+
const withSoftDeleteFilter = where => softDeleteColumn === undefined ? where : sql.and([where, sql`${sql(softDeleteColumn)} is null`]);
|
|
18
|
+
const setSoftDeleted = softDeleteColumn === undefined ? undefined : sql`${sql(softDeleteColumn)} = CURRENT_TIMESTAMP`;
|
|
16
19
|
const insertSchema = SqlSchema.findOne({
|
|
17
20
|
Request: Model.insert,
|
|
18
21
|
Result: Model,
|
|
19
22
|
execute: request => sql.onDialectOrElse({
|
|
20
23
|
mysql: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request)};
|
|
21
|
-
select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID();`.unprepared.pipe(Effect.map(([, results]) => results)),
|
|
24
|
+
select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = LAST_INSERT_ID()`)};`.unprepared.pipe(Effect.map(([, results]) => results)),
|
|
22
25
|
orElse: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
|
|
23
26
|
})
|
|
24
27
|
});
|
|
@@ -36,9 +39,9 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID(
|
|
|
36
39
|
Request: Model.update,
|
|
37
40
|
Result: Model,
|
|
38
41
|
execute: request => sql.onDialectOrElse({
|
|
39
|
-
mysql: () => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]};
|
|
40
|
-
select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idColumn]};`.unprepared.pipe(Effect.map(([, results]) => results)),
|
|
41
|
-
orElse: () => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} returning *`
|
|
42
|
+
mysql: () => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)};
|
|
43
|
+
select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)};`.unprepared.pipe(Effect.map(([, results]) => results)),
|
|
44
|
+
orElse: () => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)} returning *`
|
|
42
45
|
})
|
|
43
46
|
});
|
|
44
47
|
const update = update => updateSchema(update).pipe(Effect.catchTag("NoSuchElementError", Effect.die), Effect.withSpan(`${options.spanPrefix}.update`, {
|
|
@@ -50,7 +53,7 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
50
53
|
}));
|
|
51
54
|
const updateVoidSchema = SqlSchema.void({
|
|
52
55
|
Request: Model.update,
|
|
53
|
-
execute: request => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]}`
|
|
56
|
+
execute: request => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)}`
|
|
54
57
|
});
|
|
55
58
|
const updateVoid = update => updateVoidSchema(update).pipe(Effect.withSpan(`${options.spanPrefix}.updateVoid`, {
|
|
56
59
|
attributes: {
|
|
@@ -62,7 +65,7 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
62
65
|
const findByIdSchema = SqlSchema.findOne({
|
|
63
66
|
Request: idSchema,
|
|
64
67
|
Result: Model,
|
|
65
|
-
execute: id => sql`select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
|
|
68
|
+
execute: id => sql`select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${id}`)}`
|
|
66
69
|
});
|
|
67
70
|
const findById = id => findByIdSchema(id).pipe(Effect.withSpan(`${options.spanPrefix}.findById`, {
|
|
68
71
|
attributes: {
|
|
@@ -73,7 +76,7 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
73
76
|
}));
|
|
74
77
|
const deleteSchema = SqlSchema.void({
|
|
75
78
|
Request: idSchema,
|
|
76
|
-
execute: id => sql`delete from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
|
|
79
|
+
execute: id => softDeleteColumn === undefined ? sql`delete from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}` : sql`update ${sql(options.tableName)} set ${setSoftDeleted} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${id}`)}`
|
|
77
80
|
});
|
|
78
81
|
const delete_ = id => deleteSchema(id).pipe(Effect.withSpan(`${options.spanPrefix}.delete`, {
|
|
79
82
|
attributes: {
|
|
@@ -101,12 +104,15 @@ export const makeResolvers = (Model, options) => Effect.gen(function* () {
|
|
|
101
104
|
const sql = yield* SqlClient;
|
|
102
105
|
const idSchema = Model.fields[options.idColumn];
|
|
103
106
|
const idColumn = options.idColumn;
|
|
107
|
+
const softDeleteColumn = options.softDeleteColumn;
|
|
108
|
+
const withSoftDeleteFilter = where => softDeleteColumn === undefined ? where : sql.and([where, sql`${sql(softDeleteColumn)} is null`]);
|
|
109
|
+
const setSoftDeleted = softDeleteColumn === undefined ? undefined : sql`${sql(softDeleteColumn)} = CURRENT_TIMESTAMP`;
|
|
104
110
|
const insert = SqlResolver.ordered({
|
|
105
111
|
Request: Model.insert,
|
|
106
112
|
Result: Model,
|
|
107
113
|
execute: request => sql.onDialectOrElse({
|
|
108
114
|
mysql: () => Effect.forEach(request, request => sql`insert into ${sql(options.tableName)} ${sql.insert(request)};
|
|
109
|
-
select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID();`.unprepared.pipe(Effect.map(([, results]) => results[0])), {
|
|
115
|
+
select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = LAST_INSERT_ID()`)};`.unprepared.pipe(Effect.map(([, results]) => results[0])), {
|
|
110
116
|
concurrency: 10
|
|
111
117
|
}),
|
|
112
118
|
orElse: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
|
|
@@ -122,11 +128,11 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID(
|
|
|
122
128
|
ResultId(request) {
|
|
123
129
|
return request[idColumn];
|
|
124
130
|
},
|
|
125
|
-
execute: ids => sql`select * from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
|
|
131
|
+
execute: ids => sql`select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql.in(idColumn, ids))}`
|
|
126
132
|
}).pipe(RequestResolver.withSpan(`${options.spanPrefix}.findByIdResolver`));
|
|
127
133
|
const delete_ = SqlResolver.void({
|
|
128
134
|
Request: idSchema,
|
|
129
|
-
execute: ids => sql`delete from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
|
|
135
|
+
execute: ids => softDeleteColumn === undefined ? sql`delete from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}` : sql`update ${sql(options.tableName)} set ${setSoftDeleted} where ${withSoftDeleteFilter(sql.in(idColumn, ids))}`
|
|
130
136
|
}).pipe(RequestResolver.withSpan(`${options.spanPrefix}.deleteResolver`));
|
|
131
137
|
return {
|
|
132
138
|
insert,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlModel.js","names":["Effect","RequestResolver","SqlClient","SqlResolver","SqlSchema","makeRepository","Model","options","gen","sql","idSchema","fields","idColumn","insertSchema","findOne","Request","insert","Result","execute","request","onDialectOrElse","mysql","tableName","unprepared","pipe","map","results","orElse","returning","catchTag","die","withSpan","spanPrefix","captureStackTrace","insertVoidSchema","void","insertVoid","updateSchema","update","attributes","id","updateVoidSchema","updateVoid","findByIdSchema","findById","deleteSchema","delete_","delete","makeResolvers","ordered","forEach","concurrency","Id","ResultId","ids","in"],"sources":["../../../src/unstable/sql/SqlModel.ts"],"sourcesContent":[null],"mappings":"AAKA,OAAO,KAAKA,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAI3D,SAASC,SAAS,QAAQ,gBAAgB;AAE1C,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAC/C,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;;;;AAMA,OAAO,MAAMC,cAAc,GAAGA,
|
|
1
|
+
{"version":3,"file":"SqlModel.js","names":["Effect","RequestResolver","SqlClient","SqlResolver","SqlSchema","makeRepository","Model","options","gen","sql","idSchema","fields","idColumn","softDeleteColumn","withSoftDeleteFilter","where","undefined","and","setSoftDeleted","insertSchema","findOne","Request","insert","Result","execute","request","onDialectOrElse","mysql","tableName","unprepared","pipe","map","results","orElse","returning","catchTag","die","withSpan","spanPrefix","captureStackTrace","insertVoidSchema","void","insertVoid","updateSchema","update","attributes","id","updateVoidSchema","updateVoid","findByIdSchema","findById","deleteSchema","delete_","delete","makeResolvers","ordered","forEach","concurrency","Id","ResultId","ids","in"],"sources":["../../../src/unstable/sql/SqlModel.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -192,7 +192,7 @@ export const makeStorage = (options?: {
|
|
|
192
192
|
VALUES (1, ${created})
|
|
193
193
|
`.pipe(
|
|
194
194
|
Effect.catchIf(
|
|
195
|
-
|
|
195
|
+
isConstraintConflict,
|
|
196
196
|
() => Effect.void
|
|
197
197
|
),
|
|
198
198
|
Effect.andThen(selectRemoteId),
|
|
@@ -504,3 +504,6 @@ const decodeSessionAuthBindings = (
|
|
|
504
504
|
): Effect.Effect<ReadonlyArray<SessionAuthBindingSql>, Schema.SchemaError> => decodeSessionAuthBindingRows(rows)
|
|
505
505
|
|
|
506
506
|
const withTracerDisabled = Effect.withTracerEnabled(false)
|
|
507
|
+
|
|
508
|
+
const isConstraintConflict = (error: SqlError.SqlError): boolean =>
|
|
509
|
+
error.reason._tag === "ConstraintError" || error.reason._tag === "UniqueViolation"
|
|
@@ -237,7 +237,7 @@ export const make = <RD = never>({
|
|
|
237
237
|
yield* pipe(
|
|
238
238
|
insertMigrations(required.map(([id, name]) => [id, name])),
|
|
239
239
|
Effect.mapError((error): MigrationError | SqlError =>
|
|
240
|
-
error
|
|
240
|
+
isConstraintConflict(error)
|
|
241
241
|
? new MigrationError({
|
|
242
242
|
kind: "Locked",
|
|
243
243
|
message: "Migrations already running"
|
|
@@ -297,6 +297,9 @@ export const make = <RD = never>({
|
|
|
297
297
|
|
|
298
298
|
const migrationOrder = Order.make<ResolvedMigration>(([a], [b]) => Order.Number(a, b))
|
|
299
299
|
|
|
300
|
+
const isConstraintConflict = (error: SqlError): boolean =>
|
|
301
|
+
error.reason._tag === "ConstraintError" || error.reason._tag === "UniqueViolation"
|
|
302
|
+
|
|
300
303
|
/**
|
|
301
304
|
* @since 4.0.0
|
|
302
305
|
* @category loaders
|
|
@@ -91,6 +91,31 @@ export class SqlSyntaxError extends Schema.TaggedErrorClass<SqlSyntaxError>("eff
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
const UniqueViolationFields = {
|
|
95
|
+
...ReasonFields,
|
|
96
|
+
constraint: Schema.String
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @since 4.0.0
|
|
101
|
+
*/
|
|
102
|
+
export class UniqueViolation extends Schema.TaggedErrorClass<UniqueViolation>("effect/sql/SqlError/UniqueViolation")(
|
|
103
|
+
"UniqueViolation",
|
|
104
|
+
UniqueViolationFields
|
|
105
|
+
) {
|
|
106
|
+
/**
|
|
107
|
+
* @since 4.0.0
|
|
108
|
+
*/
|
|
109
|
+
readonly [ReasonTypeId] = ReasonTypeId
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @since 4.0.0
|
|
113
|
+
*/
|
|
114
|
+
get isRetryable(): boolean {
|
|
115
|
+
return false
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
94
119
|
/**
|
|
95
120
|
* @since 4.0.0
|
|
96
121
|
*/
|
|
@@ -217,6 +242,7 @@ export type SqlErrorReason =
|
|
|
217
242
|
| AuthenticationError
|
|
218
243
|
| AuthorizationError
|
|
219
244
|
| SqlSyntaxError
|
|
245
|
+
| UniqueViolation
|
|
220
246
|
| ConstraintError
|
|
221
247
|
| DeadlockError
|
|
222
248
|
| SerializationError
|
|
@@ -232,6 +258,7 @@ export const SqlErrorReason: Schema.Union<[
|
|
|
232
258
|
typeof AuthenticationError,
|
|
233
259
|
typeof AuthorizationError,
|
|
234
260
|
typeof SqlSyntaxError,
|
|
261
|
+
typeof UniqueViolation,
|
|
235
262
|
typeof ConstraintError,
|
|
236
263
|
typeof DeadlockError,
|
|
237
264
|
typeof SerializationError,
|
|
@@ -243,6 +270,7 @@ export const SqlErrorReason: Schema.Union<[
|
|
|
243
270
|
AuthenticationError,
|
|
244
271
|
AuthorizationError,
|
|
245
272
|
SqlSyntaxError,
|
|
273
|
+
UniqueViolation,
|
|
246
274
|
ConstraintError,
|
|
247
275
|
DeadlockError,
|
|
248
276
|
SerializationError,
|
|
@@ -317,9 +345,48 @@ const sqliteNumericCodeFromCause = (cause: unknown): number | undefined => {
|
|
|
317
345
|
return typeof errno === "number" ? errno : undefined
|
|
318
346
|
}
|
|
319
347
|
|
|
348
|
+
const matchesSqliteNumericCode = (cause: unknown, expected: number): boolean => {
|
|
349
|
+
const code = sqliteCodeFromCause(cause)
|
|
350
|
+
if (code === expected) {
|
|
351
|
+
return true
|
|
352
|
+
}
|
|
353
|
+
if (!Predicate.hasProperty(cause, "errno")) {
|
|
354
|
+
return false
|
|
355
|
+
}
|
|
356
|
+
return cause.errno === expected
|
|
357
|
+
}
|
|
358
|
+
|
|
320
359
|
const matchesSqliteCode = (code: string, expected: string): boolean =>
|
|
321
360
|
code === expected || code.startsWith(expected + "_")
|
|
322
361
|
|
|
362
|
+
const UNKNOWN_CONSTRAINT = "unknown"
|
|
363
|
+
const SQLITE_CONSTRAINT_UNIQUE = "SQLITE_CONSTRAINT_UNIQUE"
|
|
364
|
+
const SQLITE_CONSTRAINT_UNIQUE_CODE = 2067
|
|
365
|
+
|
|
366
|
+
const normalizeConstraintIdentifier = (identifier: unknown): string => {
|
|
367
|
+
if (typeof identifier !== "string") {
|
|
368
|
+
return UNKNOWN_CONSTRAINT
|
|
369
|
+
}
|
|
370
|
+
const trimmed = identifier.trim()
|
|
371
|
+
return trimmed.length === 0 ? UNKNOWN_CONSTRAINT : trimmed
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
const sqliteUniqueConstraintFromCause = (cause: unknown): string => {
|
|
375
|
+
if (Predicate.hasProperty(cause, "constraint")) {
|
|
376
|
+
return normalizeConstraintIdentifier(cause.constraint)
|
|
377
|
+
}
|
|
378
|
+
if (!Predicate.hasProperty(cause, "message")) {
|
|
379
|
+
return UNKNOWN_CONSTRAINT
|
|
380
|
+
}
|
|
381
|
+
const message = cause.message
|
|
382
|
+
if (typeof message !== "string") {
|
|
383
|
+
return UNKNOWN_CONSTRAINT
|
|
384
|
+
}
|
|
385
|
+
const prefix = "UNIQUE constraint failed:"
|
|
386
|
+
const index = message.indexOf(prefix)
|
|
387
|
+
return index === -1 ? UNKNOWN_CONSTRAINT : normalizeConstraintIdentifier(message.slice(index + prefix.length))
|
|
388
|
+
}
|
|
389
|
+
|
|
323
390
|
/**
|
|
324
391
|
* @since 4.0.0
|
|
325
392
|
*/
|
|
@@ -333,6 +400,11 @@ export const classifySqliteError = (
|
|
|
333
400
|
operation
|
|
334
401
|
}
|
|
335
402
|
const code = sqliteCodeFromCause(cause)
|
|
403
|
+
const numericCode = sqliteNumericCodeFromCause(cause)
|
|
404
|
+
|
|
405
|
+
if (code === SQLITE_CONSTRAINT_UNIQUE || matchesSqliteNumericCode(cause, SQLITE_CONSTRAINT_UNIQUE_CODE)) {
|
|
406
|
+
return new UniqueViolation({ ...props, constraint: sqliteUniqueConstraintFromCause(cause) })
|
|
407
|
+
}
|
|
336
408
|
|
|
337
409
|
if (typeof code === "string") {
|
|
338
410
|
if (matchesSqliteCode(code, "SQLITE_AUTH")) {
|
|
@@ -352,7 +424,6 @@ export const classifySqliteError = (
|
|
|
352
424
|
}
|
|
353
425
|
}
|
|
354
426
|
|
|
355
|
-
const numericCode = sqliteNumericCodeFromCause(cause)
|
|
356
427
|
if (typeof numericCode === "number") {
|
|
357
428
|
const code = numericCode & 0xff
|
|
358
429
|
switch (code) {
|
|
@@ -21,11 +21,13 @@ import * as SqlSchema from "./SqlSchema.ts"
|
|
|
21
21
|
*/
|
|
22
22
|
export const makeRepository = <
|
|
23
23
|
S extends Model.Any,
|
|
24
|
-
Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"])
|
|
24
|
+
Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"]),
|
|
25
|
+
SoftDelete extends keyof S["fields"] = never
|
|
25
26
|
>(Model: S, options: {
|
|
26
27
|
readonly tableName: string
|
|
27
28
|
readonly spanPrefix: string
|
|
28
29
|
readonly idColumn: Id
|
|
30
|
+
readonly softDeleteColumn?: SoftDelete | undefined
|
|
29
31
|
}): Effect.Effect<
|
|
30
32
|
{
|
|
31
33
|
readonly insert: (
|
|
@@ -66,6 +68,12 @@ export const makeRepository = <
|
|
|
66
68
|
const sql = yield* SqlClient
|
|
67
69
|
const idSchema = Model.fields[options.idColumn] as Schema.Top
|
|
68
70
|
const idColumn = options.idColumn as string
|
|
71
|
+
const softDeleteColumn = options.softDeleteColumn as string | undefined
|
|
72
|
+
const withSoftDeleteFilter = (where: any) =>
|
|
73
|
+
softDeleteColumn === undefined ? where : sql.and([where, sql`${sql(softDeleteColumn)} is null`])
|
|
74
|
+
const setSoftDeleted = softDeleteColumn === undefined
|
|
75
|
+
? undefined
|
|
76
|
+
: sql`${sql(softDeleteColumn)} = CURRENT_TIMESTAMP`
|
|
69
77
|
|
|
70
78
|
const insertSchema = SqlSchema.findOne({
|
|
71
79
|
Request: Model.insert,
|
|
@@ -74,9 +82,10 @@ export const makeRepository = <
|
|
|
74
82
|
sql.onDialectOrElse({
|
|
75
83
|
mysql: () =>
|
|
76
84
|
sql`insert into ${sql(options.tableName)} ${sql.insert(request as any)};
|
|
77
|
-
select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID()
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = LAST_INSERT_ID()`)};`
|
|
86
|
+
.unprepared.pipe(
|
|
87
|
+
Effect.map(([, results]) => results as any)
|
|
88
|
+
),
|
|
80
89
|
orElse: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request as any).returning("*")}`
|
|
81
90
|
})
|
|
82
91
|
})
|
|
@@ -111,15 +120,16 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID(
|
|
|
111
120
|
execute: (request: any) =>
|
|
112
121
|
sql.onDialectOrElse({
|
|
113
122
|
mysql: () =>
|
|
114
|
-
sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${
|
|
115
|
-
request[idColumn]
|
|
123
|
+
sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${
|
|
124
|
+
withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)
|
|
116
125
|
};
|
|
117
|
-
select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idColumn]}
|
|
118
|
-
|
|
119
|
-
|
|
126
|
+
select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)};`
|
|
127
|
+
.unprepared.pipe(
|
|
128
|
+
Effect.map(([, results]) => results as any)
|
|
129
|
+
),
|
|
120
130
|
orElse: () =>
|
|
121
|
-
sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${
|
|
122
|
-
request[idColumn]
|
|
131
|
+
sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${
|
|
132
|
+
withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)
|
|
123
133
|
} returning *`
|
|
124
134
|
})
|
|
125
135
|
})
|
|
@@ -142,8 +152,8 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
142
152
|
const updateVoidSchema = SqlSchema.void({
|
|
143
153
|
Request: Model.update,
|
|
144
154
|
execute: (request: any) =>
|
|
145
|
-
sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${
|
|
146
|
-
request[idColumn]
|
|
155
|
+
sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${
|
|
156
|
+
withSoftDeleteFilter(sql`${sql(idColumn)} = ${request[idColumn]}`)
|
|
147
157
|
}`
|
|
148
158
|
})
|
|
149
159
|
const updateVoid = (
|
|
@@ -160,7 +170,8 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
160
170
|
const findByIdSchema = SqlSchema.findOne({
|
|
161
171
|
Request: idSchema,
|
|
162
172
|
Result: Model,
|
|
163
|
-
execute: (id: any) =>
|
|
173
|
+
execute: (id: any) =>
|
|
174
|
+
sql`select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = ${id}`)}`
|
|
164
175
|
})
|
|
165
176
|
const findById = (
|
|
166
177
|
id: S["fields"][Id]["Type"]
|
|
@@ -177,7 +188,12 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
177
188
|
|
|
178
189
|
const deleteSchema = SqlSchema.void({
|
|
179
190
|
Request: idSchema,
|
|
180
|
-
execute: (id: any) =>
|
|
191
|
+
execute: (id: any) =>
|
|
192
|
+
softDeleteColumn === undefined
|
|
193
|
+
? sql`delete from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
|
|
194
|
+
: sql`update ${sql(options.tableName)} set ${setSoftDeleted} where ${
|
|
195
|
+
withSoftDeleteFilter(sql`${sql(idColumn)} = ${id}`)
|
|
196
|
+
}`
|
|
181
197
|
})
|
|
182
198
|
const delete_ = (
|
|
183
199
|
id: S["fields"][Id]["Type"]
|
|
@@ -201,13 +217,15 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
|
|
|
201
217
|
*/
|
|
202
218
|
export const makeResolvers = <
|
|
203
219
|
S extends Model.Any,
|
|
204
|
-
Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"])
|
|
220
|
+
Id extends (keyof S["Type"]) & (keyof S["update"]["Type"]) & (keyof S["fields"]),
|
|
221
|
+
SoftDelete extends keyof S["fields"] = never
|
|
205
222
|
>(
|
|
206
223
|
Model: S,
|
|
207
224
|
options: {
|
|
208
225
|
readonly tableName: string
|
|
209
226
|
readonly spanPrefix: string
|
|
210
227
|
readonly idColumn: Id
|
|
228
|
+
readonly softDeleteColumn?: SoftDelete | undefined
|
|
211
229
|
}
|
|
212
230
|
): Effect.Effect<
|
|
213
231
|
{
|
|
@@ -246,6 +264,12 @@ export const makeResolvers = <
|
|
|
246
264
|
const sql = yield* SqlClient
|
|
247
265
|
const idSchema = Model.fields[options.idColumn] as Schema.Top
|
|
248
266
|
const idColumn = options.idColumn as string
|
|
267
|
+
const softDeleteColumn = options.softDeleteColumn as string | undefined
|
|
268
|
+
const withSoftDeleteFilter = (where: any) =>
|
|
269
|
+
softDeleteColumn === undefined ? where : sql.and([where, sql`${sql(softDeleteColumn)} is null`])
|
|
270
|
+
const setSoftDeleted = softDeleteColumn === undefined
|
|
271
|
+
? undefined
|
|
272
|
+
: sql`${sql(softDeleteColumn)} = CURRENT_TIMESTAMP`
|
|
249
273
|
|
|
250
274
|
const insert: RequestResolver.RequestResolver<
|
|
251
275
|
SqlResolver.SqlRequest<
|
|
@@ -262,9 +286,10 @@ export const makeResolvers = <
|
|
|
262
286
|
mysql: () =>
|
|
263
287
|
Effect.forEach(request, (request: any) =>
|
|
264
288
|
sql`insert into ${sql(options.tableName)} ${sql.insert(request)};
|
|
265
|
-
select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID()
|
|
266
|
-
|
|
267
|
-
|
|
289
|
+
select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql`${sql(idColumn)} = LAST_INSERT_ID()`)};`
|
|
290
|
+
.unprepared.pipe(
|
|
291
|
+
Effect.map(([, results]) => results[0] as any)
|
|
292
|
+
), { concurrency: 10 }),
|
|
268
293
|
orElse: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
|
|
269
294
|
})
|
|
270
295
|
}).pipe(
|
|
@@ -293,7 +318,8 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID(
|
|
|
293
318
|
ResultId(request: any) {
|
|
294
319
|
return request[idColumn]
|
|
295
320
|
},
|
|
296
|
-
execute: (ids: any) =>
|
|
321
|
+
execute: (ids: any) =>
|
|
322
|
+
sql`select * from ${sql(options.tableName)} where ${withSoftDeleteFilter(sql.in(idColumn, ids))}`
|
|
297
323
|
}).pipe(
|
|
298
324
|
RequestResolver.withSpan(`${options.spanPrefix}.findByIdResolver`)
|
|
299
325
|
)
|
|
@@ -307,7 +333,12 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID(
|
|
|
307
333
|
>
|
|
308
334
|
> = SqlResolver.void({
|
|
309
335
|
Request: idSchema,
|
|
310
|
-
execute: (ids: any) =>
|
|
336
|
+
execute: (ids: any) =>
|
|
337
|
+
softDeleteColumn === undefined
|
|
338
|
+
? sql`delete from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
|
|
339
|
+
: sql`update ${sql(options.tableName)} set ${setSoftDeleted} where ${
|
|
340
|
+
withSoftDeleteFilter(sql.in(idColumn, ids))
|
|
341
|
+
}`
|
|
311
342
|
}).pipe(
|
|
312
343
|
RequestResolver.withSpan(`${options.spanPrefix}.deleteResolver`)
|
|
313
344
|
)
|