npm package diff

Package: @forge/storage

Versions: 1.5.15-experimental-f6dcf26 - 1.5.15-experimental-204139e

File: package/out/entity-storage/custom-entity-transaction-api.js

Index: package/out/entity-storage/custom-entity-transaction-api.js
===================================================================
--- package/out/entity-storage/custom-entity-transaction-api.js
+++ package/out/entity-storage/custom-entity-transaction-api.js
@@ -0,0 +1,171 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CustomEntityTransactionBuilderWithAndOrCondition = exports.CustomEntityTransactionBuilderWithOrCondition = exports.CustomEntityTransactionBuilderWithAndCondition = exports.DefaultCustomEntityTransactionBuilder = void 0;
+class DefaultCustomEntityTransactionBuilder {
+    globalStorage;
+    entityName;
+    transactionOptions;
+    constructor(globalStorage, entityName, transactionOptions = {}) {
+        this.globalStorage = globalStorage;
+        this.entityName = entityName;
+        this.transactionOptions = transactionOptions;
+        this.transactionOptions = {
+            ...transactionOptions
+        };
+    }
+    getKeyWithEntityName(entity, key) {
+        const keyWithEntityName = `${entity}-${key}`;
+        return keyWithEntityName;
+    }
+    entity(name) {
+        return new DefaultCustomEntityTransactionBuilder(this.globalStorage, name, {
+            ...this.transactionOptions
+        });
+    }
+    set(key, value) {
+        const keyWithEntityName = this.getKeyWithEntityName(this.entityName, key);
+        const input = {
+            transactionType: 'set',
+            key,
+            value,
+            entity: this.entityName
+        };
+        return new CustomEntityTransactionBuilderWithAndOrCondition(this.globalStorage, this.entityName, keyWithEntityName, {
+            ...this.transactionOptions,
+            [keyWithEntityName]: input
+        });
+    }
+    delete(key) {
+        const keyWithEntityName = this.getKeyWithEntityName(this.entityName, key);
+        const input = {
+            transactionType: 'delete',
+            key,
+            entity: this.entityName
+        };
+        return new CustomEntityTransactionBuilderWithAndOrCondition(this.globalStorage, this.entityName, keyWithEntityName, {
+            ...this.transactionOptions,
+            [keyWithEntityName]: input
+        });
+    }
+    check(key) {
+        const keyWithEntityName = this.getKeyWithEntityName(this.entityName, key);
+        const input = {
+            transactionType: 'check',
+            key,
+            entity: this.entityName
+        };
+        return new CustomEntityTransactionBuilderWithAndOrCondition(this.globalStorage, this.entityName, keyWithEntityName, {
+            ...this.transactionOptions,
+            [keyWithEntityName]: input
+        });
+    }
+    async execute() {
+        if (!Object.keys(this.transactionOptions).length) {
+            throw new Error('Nothing to execute');
+        }
+        const transformedInput = {};
+        Object.entries(this.transactionOptions).forEach(([_, value]) => {
+            const { transactionType } = value;
+            if (!transformedInput[transactionType]) {
+                transformedInput[transactionType] = [];
+            }
+            const input = {
+                key: value.key,
+                entityName: value.entity
+            };
+            if (value.conditions?.length && value.conditionOperator) {
+                input.conditions = {
+                    [value.conditionOperator]: value.conditions
+                };
+            }
+            if (transactionType === 'set') {
+                input.value = value.value;
+                transformedInput[transactionType]?.push(input);
+            }
+            else {
+                transformedInput[transactionType]?.push(input);
+            }
+        });
+        await this.globalStorage.transaction(transformedInput, true);
+    }
+}
+exports.DefaultCustomEntityTransactionBuilder = DefaultCustomEntityTransactionBuilder;
+class CustomEntityTransactionBuilderWithAndCondition extends DefaultCustomEntityTransactionBuilder {
+    globalStorage;
+    entityName;
+    key;
+    transactionOptions;
+    constructor(globalStorage, entityName, key, transactionOptions = {}) {
+        super(globalStorage, entityName, transactionOptions);
+        this.globalStorage = globalStorage;
+        this.entityName = entityName;
+        this.key = key;
+        this.transactionOptions = transactionOptions;
+        this.transactionOptions = {
+            ...transactionOptions
+        };
+    }
+    andCondition(field, condition) {
+        const newQueryOptions = {
+            ...this.transactionOptions
+        };
+        newQueryOptions[this.key].conditions = [
+            ...(newQueryOptions[this.key].conditions ?? []),
+            { property: field, ...condition }
+        ];
+        newQueryOptions[this.key].conditionOperator = 'and';
+        return new CustomEntityTransactionBuilderWithAndCondition(this.globalStorage, this.entityName, this.key, newQueryOptions);
+    }
+}
+exports.CustomEntityTransactionBuilderWithAndCondition = CustomEntityTransactionBuilderWithAndCondition;
+class CustomEntityTransactionBuilderWithOrCondition extends DefaultCustomEntityTransactionBuilder {
+    globalStorage;
+    entityName;
+    key;
+    transactionOptions;
+    constructor(globalStorage, entityName, key, transactionOptions = {}) {
+        super(globalStorage, entityName, transactionOptions);
+        this.globalStorage = globalStorage;
+        this.entityName = entityName;
+        this.key = key;
+        this.transactionOptions = transactionOptions;
+        this.transactionOptions = {
+            ...transactionOptions
+        };
+    }
+    orCondition(field, condition) {
+        const newQueryOptions = {
+            ...this.transactionOptions
+        };
+        newQueryOptions[this.key].conditions = [
+            ...(newQueryOptions[this.key].conditions ?? []),
+            { property: field, ...condition }
+        ];
+        newQueryOptions[this.key].conditionOperator = 'or';
+        return new CustomEntityTransactionBuilderWithOrCondition(this.globalStorage, this.entityName, this.key, newQueryOptions);
+    }
+}
+exports.CustomEntityTransactionBuilderWithOrCondition = CustomEntityTransactionBuilderWithOrCondition;
+class CustomEntityTransactionBuilderWithAndOrCondition extends DefaultCustomEntityTransactionBuilder {
+    globalStorage;
+    entityName;
+    key;
+    transactionOptions;
+    constructor(globalStorage, entityName, key, transactionOptions = {}) {
+        super(globalStorage, entityName, transactionOptions);
+        this.globalStorage = globalStorage;
+        this.entityName = entityName;
+        this.key = key;
+        this.transactionOptions = transactionOptions;
+        this.transactionOptions = {
+            ...transactionOptions
+        };
+    }
+    andCondition(field, condition) {
+        return new CustomEntityTransactionBuilderWithAndCondition(this.globalStorage, this.entityName, this.key, this.transactionOptions).andCondition(field, condition);
+    }
+    orCondition(field, condition) {
+        return new CustomEntityTransactionBuilderWithOrCondition(this.globalStorage, this.entityName, this.key, this.transactionOptions).orCondition(field, condition);
+    }
+}
+exports.CustomEntityTransactionBuilderWithAndOrCondition = CustomEntityTransactionBuilderWithAndOrCondition;