MCPcopy Create free account
hub / github.com/Effect-TS/effect / applyDelete

Function applyDelete

packages/platform/browser/src/IndexedDbQueryBuilder.ts:751–854  ·  view source on GitHub ↗
(query: IndexedDbQuery.Delete<any, never>)

Source from the content-addressed store, hash-verified

749 : never
750
751const applyDelete = (query: IndexedDbQuery.Delete<any, never>) =>
752 Effect.callback<any, IndexedDbQueryError>((resume) => {
753 const database = query.delete.from.database
754 const IDBKeyRange = query.delete.from.IDBKeyRange
755 const transaction = getOrCreateTransaction(database.current, [query.delete.from.table.tableName], "readwrite", {
756 durability: query.delete.from.table.durability
757 })
758 const objectStore = transaction.objectStore(query.delete.from.table.tableName)
759 const store = query.delete.index === undefined ? objectStore : objectStore.index(query.delete.index)
760 const predicate = query.predicate
761
762 let keyRange: globalThis.IDBKeyRange | undefined = undefined
763
764 if (query.only !== undefined) {
765 keyRange = IDBKeyRange.only(query.only)
766 } else if (
767 query.lowerBound !== undefined &&
768 query.upperBound !== undefined
769 ) {
770 keyRange = IDBKeyRange.bound(
771 query.lowerBound,
772 query.upperBound,
773 query.excludeLowerBound,
774 query.excludeUpperBound
775 )
776 } else if (query.lowerBound !== undefined) {
777 keyRange = IDBKeyRange.lowerBound(
778 query.lowerBound,
779 query.excludeLowerBound
780 )
781 } else if (query.upperBound !== undefined) {
782 keyRange = IDBKeyRange.upperBound(
783 query.upperBound,
784 query.excludeUpperBound
785 )
786 }
787
788 let request: globalThis.IDBRequest
789
790 if (query.delete.index !== undefined || query.limitValue !== undefined || predicate) {
791 const cursorRequest = store.openCursor(keyRange)
792 let count = 0
793
794 cursorRequest.onerror = () => {
795 resume(
796 Effect.fail(
797 new IndexedDbQueryError({
798 reason: "TransactionError",
799 cause: cursorRequest.error
800 })
801 )
802 )
803 }
804
805 cursorRequest.onsuccess = () => {
806 const cursor = cursorRequest.result
807 if (cursor === null) {
808 return resume(Effect.void)

Callers 1

evaluateFunction · 0.85

Calls 5

getOrCreateTransactionFunction · 0.85
predicateFunction · 0.85
resumeFunction · 0.50
failMethod · 0.45
succeedMethod · 0.45

Tested by

no test coverage detected