@aws-amplify/datastore
Version:
AppSyncLocal support for aws-amplify
1 lines • 11.8 kB
Source Map (JSON)
{"version":3,"file":"AsyncStorageAdapter.mjs","sources":["../../../../src/storage/adapter/AsyncStorageAdapter.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { OpType, QueryOne, } from '../../types';\nimport { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, getIndexKeys, getStorename, inMemoryPagination, keysEqual, traverseModel, validatePredicate, } from '../../util';\nimport AsyncStorageDatabase from './AsyncStorageDatabase';\nimport { StorageAdapterBase } from './StorageAdapterBase';\nexport class AsyncStorageAdapter extends StorageAdapterBase {\n async preSetUpChecks() {\n // no-ops for AsyncStorageAdapter\n }\n async preOpCheck() {\n // no-ops for AsyncStorageAdapter\n }\n /**\n * Open AsyncStorage database\n * Create new DB if one doesn't exist\n *\n * Called by `StorageAdapterBase.setUp()`\n *\n * @returns AsyncStorageDatabase instance\n */\n async initDb() {\n const db = new AsyncStorageDatabase();\n await db.init();\n return db;\n }\n async clear() {\n await this.db.clear();\n this.db = undefined;\n this.initPromise = undefined;\n }\n async batchSave(modelConstructor, items) {\n if (items.length === 0) {\n return [];\n }\n const modelName = modelConstructor.name;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const storeName = getStorename(namespaceName, modelName);\n const keys = getIndexKeys(this.schema.namespaces[namespaceName], modelName);\n const batch = [];\n for (const item of items) {\n const model = this.modelInstanceCreator(modelConstructor, item);\n const connectedModels = traverseModel(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);\n const keyValuesPath = this.getIndexKeyValuesPath(model);\n const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => {\n const instanceKeyValuesPath = this.getIndexKeyValuesPath(connectedModelInstance);\n return keysEqual([instanceKeyValuesPath], [keyValuesPath]);\n });\n batch.push(instance);\n }\n return this.db.batchSave(storeName, batch, keys);\n }\n async _get(storeName, keyArr) {\n const itemKeyValuesPath = keyArr.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n return (await this.db.get(itemKeyValuesPath, storeName));\n }\n async save(model, condition) {\n const { storeName, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);\n const fromDB = await this._get(storeName, modelKeyValues);\n this.validateSaveCondition(condition, fromDB);\n const result = [];\n for await (const resItem of connectionStoreNames) {\n const { storeName: storeNameForRestItem, item, instance, keys } = resItem;\n const itemKeyValues = keys.map(key => item[key]);\n const fromDBForRestItem = (await this._get(storeNameForRestItem, itemKeyValues));\n const opType = fromDBForRestItem ? OpType.UPDATE : OpType.INSERT;\n if (keysEqual(itemKeyValues, modelKeyValues) ||\n opType === OpType.INSERT) {\n await this.db.save(item, storeNameForRestItem, keys, itemKeyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));\n result.push([instance, opType]);\n }\n }\n return result;\n }\n async query(modelConstructor, predicate, pagination) {\n const { storeName, namespaceName, queryByKey, predicates, hasSort, hasPagination, } = this.queryMetadata(modelConstructor, predicate, pagination);\n const records = (await (async () => {\n if (queryByKey) {\n const keyValues = queryByKey.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n const record = await this.getByKey(storeName, keyValues);\n return record ? [record] : [];\n }\n if (predicates) {\n const filtered = await this.filterOnPredicate(storeName, predicates);\n return this.inMemoryPagination(filtered, pagination);\n }\n if (hasSort || hasPagination) {\n const all = await this.getAll(storeName);\n return this.inMemoryPagination(all, pagination);\n }\n return this.getAll(storeName);\n })());\n return this.load(namespaceName, modelConstructor.name, records);\n }\n async getByKey(storeName, keyValuePath) {\n return (await this.db.get(keyValuePath, storeName));\n }\n async getAll(storeName) {\n return this.db.getAll(storeName);\n }\n async filterOnPredicate(storeName, predicates) {\n const { predicates: predicateObjs, type } = predicates;\n const all = (await this.getAll(storeName));\n const filtered = predicateObjs\n ? all.filter(m => validatePredicate(m, type, predicateObjs))\n : all;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return inMemoryPagination(records, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n const storeName = this.getStorenameForModel(modelConstructor);\n const result = (await this.db.getOne(firstOrLast, storeName));\n return result && this.modelInstanceCreator(modelConstructor, result);\n }\n async deleteItem(deleteQueue) {\n for await (const deleteItem of deleteQueue) {\n const { storeName, items } = deleteItem;\n for await (const item of items) {\n if (item) {\n if (typeof item === 'object') {\n const keyValuesPath = this.getIndexKeyValuesPath(item);\n await this.db.delete(keyValuesPath, storeName);\n }\n }\n }\n }\n }\n // #region platform-specific helper methods\n /**\n * Retrieves concatenated primary key values from a model\n *\n * @param model\n * @returns\n */\n getIndexKeyValuesPath(model) {\n return this.getIndexKeyValuesFromModel(model).join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n }\n}\nexport default new AsyncStorageAdapter();\n"],"names":[],"mappings":"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"}