@webiny/api-form-builder-so-ddb 0.0.0-unstable.40876133bb → 0.0.0-unstable.496cf268ac
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/definitions/form.js +0 -5
- package/definitions/form.js.map +1 -1
- package/definitions/settings.js +0 -5
- package/definitions/settings.js.map +1 -1
- package/definitions/submission.js +0 -5
- package/definitions/submission.js.map +1 -1
- package/definitions/system.js +0 -5
- package/definitions/system.js.map +1 -1
- package/definitions/table.js +0 -3
- package/definitions/table.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +25 -29
- package/index.js.map +1 -1
- package/operations/form/fields.js +0 -3
- package/operations/form/fields.js.map +1 -1
- package/operations/form/index.js +2 -85
- package/operations/form/index.js.map +1 -1
- package/operations/settings/index.js +0 -19
- package/operations/settings/index.js.map +1 -1
- package/operations/submission/fields.js +0 -3
- package/operations/submission/fields.js.map +1 -1
- package/operations/submission/index.js +0 -32
- package/operations/submission/index.js.map +1 -1
- package/operations/system/index.js +0 -17
- package/operations/system/index.js.map +1 -1
- package/package.json +11 -11
- package/plugins/FormDynamoDbFieldPlugin.js +0 -5
- package/plugins/FormDynamoDbFieldPlugin.js.map +1 -1
- package/plugins/FormSubmissionDynamoDbFieldPlugin.js +0 -5
- package/plugins/FormSubmissionDynamoDbFieldPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +27 -0
- package/plugins/index.js.map +1 -0
- package/types.js +0 -1
- package/types.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFormStorageOperations","params","entity","table","plugins","formDynamoDbFields","byType","FormDynamoDbFieldPlugin","type","createFormPartitionKey","tenant","locale","createFormLatestPartitionKey","createFormLatestPublishedPartitionKey","createFormGSIPartitionKey","id","targetId","parseIdentifier","createRevisionSortKey","createFormLatestSortKey","formId","value","createLatestPublishedSortKey","createGSISortKey","version","createFormType","createFormLatestType","createFormLatestPublishedType","createRevisionKeys","form","PK","SK","createLatestKeys","createLatestPublishedKeys","createGSIKeys","GSI1_PK","GSI1_SK","createForm","revisionKeys","latestKeys","gsiKeys","items","putBatch","TYPE","batchWriteAll","ex","WebinyError","message","code","createFormFrom","original","latest","updateForm","latestForm","getForm","where","isLatestForm","push","published","partitionKey","sortKey","createIdentifier","keys","item","get","cleanupItem","listForms","sort","limit","initialWhere","after","queryAllParams","options","gte","results","queryAll","totalCount","length","filteredItems","filterItems","fields","sortedItems","sortItems","start","parseInt","decodeCursor","hasMoreItems","end","undefined","slice","cursor","encodeCursor","meta","listFormRevisions","index","deleteForm","beginsWith","hasLatestPublishedRecord","deleteItems","map","deleteBatch","deleteFormRevision","revisions","previous","latestPublishedForm","find","rev","isLatest","isLatestPublished","previouslyPublishedForm","filter","f","publishedOn","a","b","Date","getTime","shift","publishForm","latestPublishedKeys","unpublishForm","version_not","publishedOn_not","previouslyPublishedRevision"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n FbForm,\n FormBuilderStorageOperationsCreateFormFromParams,\n FormBuilderStorageOperationsCreateFormParams,\n FormBuilderStorageOperationsDeleteFormParams,\n FormBuilderStorageOperationsDeleteFormRevisionParams,\n FormBuilderStorageOperationsGetFormParams,\n FormBuilderStorageOperationsListFormRevisionsParams,\n FormBuilderStorageOperationsListFormRevisionsParamsWhere,\n FormBuilderStorageOperationsListFormsParams,\n FormBuilderStorageOperationsListFormsResponse,\n FormBuilderStorageOperationsPublishFormParams,\n FormBuilderStorageOperationsUnpublishFormParams,\n FormBuilderStorageOperationsUpdateFormParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderFormCreateGSIPartitionKeyParams,\n FormBuilderFormCreatePartitionKeyParams,\n FormBuilderFormStorageOperations\n} from \"~/types\";\nimport { FormDynamoDbFieldPlugin } from \"~/plugins/FormDynamoDbFieldPlugin\";\nimport { decodeCursor, encodeCursor } from \"@webiny/db-dynamodb/utils/cursor\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\ntype DbRecord<T = any> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\ninterface Keys {\n PK: string;\n SK: string;\n}\n\ninterface FormLatestSortKeyParams {\n id?: string;\n formId?: string;\n}\n\ninterface GsiKeys {\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\nexport interface CreateFormStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n plugins: PluginsContainer;\n}\n\nexport const createFormStorageOperations = (\n params: CreateFormStorageOperationsParams\n): FormBuilderFormStorageOperations => {\n const { entity, table, plugins } = params;\n\n const formDynamoDbFields = plugins.byType<FormDynamoDbFieldPlugin>(\n FormDynamoDbFieldPlugin.type\n );\n\n const createFormPartitionKey = (params: FormBuilderFormCreatePartitionKeyParams): string => {\n const { tenant, locale } = params;\n\n return `T#${tenant}#L#${locale}#FB#F`;\n };\n\n const createFormLatestPartitionKey = (\n params: FormBuilderFormCreatePartitionKeyParams\n ): string => {\n return `${createFormPartitionKey(params)}#L`;\n };\n\n const createFormLatestPublishedPartitionKey = (\n params: FormBuilderFormCreatePartitionKeyParams\n ): string => {\n return `${createFormPartitionKey(params)}#LP`;\n };\n\n const createFormGSIPartitionKey = (\n params: FormBuilderFormCreateGSIPartitionKeyParams\n ): string => {\n const { tenant, locale, id: targetId } = params;\n const { id } = parseIdentifier(targetId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n\n const createRevisionSortKey = ({ id }: { id: string }): string => {\n return `${id}`;\n };\n\n const createFormLatestSortKey = ({ id, formId }: FormLatestSortKeyParams): string => {\n const value = parseIdentifier(id || formId);\n return value.id;\n };\n\n const createLatestPublishedSortKey = ({ id, formId }: FormLatestSortKeyParams): string => {\n const value = parseIdentifier(id || formId);\n return value.id;\n };\n\n const createGSISortKey = (version: number) => {\n return `${version}`;\n };\n\n const createFormType = (): string => {\n return \"fb.form\";\n };\n\n const createFormLatestType = (): string => {\n return \"fb.form.latest\";\n };\n\n const createFormLatestPublishedType = (): string => {\n return \"fb.form.latestPublished\";\n };\n\n const createRevisionKeys = (form: FbForm): Keys => {\n return {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form)\n };\n };\n\n const createLatestKeys = (form: FbForm): Keys => {\n return {\n PK: createFormLatestPartitionKey(form),\n SK: createFormLatestSortKey(form)\n };\n };\n\n const createLatestPublishedKeys = (form: FbForm): Keys => {\n return {\n PK: createFormLatestPublishedPartitionKey(form),\n SK: createLatestPublishedSortKey(form)\n };\n };\n\n const createGSIKeys = (form: FbForm): GsiKeys => {\n return {\n GSI1_PK: createFormGSIPartitionKey(form),\n GSI1_SK: createGSISortKey(form.version)\n };\n };\n\n const createForm = async (\n params: FormBuilderStorageOperationsCreateFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n form\n }\n );\n }\n return form;\n };\n\n const createFormFrom = async (\n params: FormBuilderStorageOperationsCreateFormFromParams\n ): Promise<FbForm> => {\n const { form, original, latest } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form data in the table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latest\n }\n );\n }\n\n return form;\n };\n\n const updateForm = async (\n params: FormBuilderStorageOperationsUpdateFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n })\n ];\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latestForm\n }\n );\n }\n\n return form;\n };\n\n const getForm = async (\n params: FormBuilderStorageOperationsGetFormParams\n ): Promise<FbForm | null> => {\n const { where } = params;\n const { id, formId, latest, published, version } = where;\n if (latest && published) {\n throw new WebinyError(\"Cannot have both latest and published params.\");\n }\n let partitionKey: string;\n let sortKey: string;\n if (latest) {\n partitionKey = createFormLatestPartitionKey(where);\n sortKey = createFormLatestSortKey(where);\n } else if (published && !version) {\n /**\n * Because of the specifics how DynamoDB works, we must not load the published record if version is sent.\n */\n partitionKey = createFormLatestPublishedPartitionKey(where);\n sortKey = createLatestPublishedSortKey(where);\n } else if (id || version) {\n partitionKey = createFormPartitionKey(where);\n sortKey = createRevisionSortKey({\n id:\n id ||\n createIdentifier({\n id: formId as string,\n version: version as number\n })\n });\n } else {\n throw new WebinyError(\n \"Missing parameter to create a sort key.\",\n \"MISSING_WHERE_PARAMETER\",\n {\n where\n }\n );\n }\n\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n\n try {\n const item = await get<FbForm>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get form by keys.\",\n ex.code || \"GET_FORM_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const listForms = async (\n params: FormBuilderStorageOperationsListFormsParams\n ): Promise<FormBuilderStorageOperationsListFormsResponse> => {\n const { sort, limit, where: initialWhere, after } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormLatestPartitionKey(initialWhere),\n options: {\n gte: \" \"\n }\n };\n\n let results;\n try {\n results = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list forms.\",\n ex.code || \"LIST_FORMS_ERROR\",\n {\n where: initialWhere,\n partitionKey: queryAllParams.partitionKey\n }\n );\n }\n const totalCount = results.length;\n\n const where: Partial<FormBuilderStorageOperationsListFormsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.tenant;\n delete where.locale;\n\n const filteredItems = filterItems({\n plugins,\n items: results,\n where,\n fields: formDynamoDbFields\n });\n\n const sortedItems = sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n\n const start = parseInt(decodeCursor(after) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = sortedItems.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return {\n items,\n meta\n };\n };\n\n const listFormRevisions = async (\n params: FormBuilderStorageOperationsListFormRevisionsParams\n ): Promise<FbForm[]> => {\n const { where: initialWhere, sort } = params;\n const { id, formId, tenant, locale } = initialWhere;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormGSIPartitionKey({\n tenant,\n locale,\n id: formId || id\n }),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n\n let items: FbForm[] = [];\n try {\n items = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms by given params.\",\n ex.code || \"QUERY_FORMS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n const where: Partial<FormBuilderStorageOperationsListFormRevisionsParamsWhere> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.id;\n delete where.formId;\n delete where.tenant;\n delete where.locale;\n\n const filteredItems = filterItems({\n plugins,\n items,\n where,\n fields: formDynamoDbFields\n });\n return sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n };\n\n const deleteForm = async (\n params: FormBuilderStorageOperationsDeleteFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n let items: any[];\n /**\n * This will find all form records.\n */\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormPartitionKey(form),\n options: {\n beginsWith: form.formId\n }\n };\n try {\n items = await queryAll<DbRecord>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms and submissions by given params.\",\n ex.code || \"QUERY_FORM_AND_SUBMISSIONS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n let hasLatestPublishedRecord = false;\n\n const deleteItems = items.map(item => {\n if (!hasLatestPublishedRecord && item.published) {\n hasLatestPublishedRecord = true;\n }\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n if (hasLatestPublishedRecord) {\n deleteItems.push(entity.deleteBatch(createLatestPublishedKeys(items[0])));\n }\n\n deleteItems.push(entity.deleteBatch(createLatestKeys(items[0])));\n\n try {\n await batchWriteAll({\n table,\n items: deleteItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form and it's submissions.\",\n ex.code || \"DELETE_FORM_AND_SUBMISSIONS_ERROR\"\n );\n }\n return form;\n };\n /**\n * We need to:\n * - delete current revision\n * - get previously published revision and update the record if it exists or delete if it does not\n * - update latest record if current one is the latest\n */\n const deleteFormRevision = async (\n params: FormBuilderStorageOperationsDeleteFormRevisionParams\n ): Promise<FbForm> => {\n const { form, revisions, previous } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n\n const latestForm = revisions[0];\n const latestPublishedForm = revisions.find(rev => rev.published === true);\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [entity.deleteBatch(revisionKeys)];\n\n if (isLatest || isLatestPublished) {\n /**\n * Sort out the latest published record.\n */\n if (isLatestPublished) {\n const previouslyPublishedForm = revisions\n .filter(f => !!f.publishedOn && f.version !== form.version)\n .sort((a, b) => {\n return (\n new Date(b.publishedOn as string).getTime() -\n new Date(a.publishedOn as string).getTime()\n );\n })\n .shift();\n if (previouslyPublishedForm) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedForm,\n ...createLatestPublishedKeys(previouslyPublishedForm),\n GSI1_PK: null,\n GSI1_SK: null,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(createLatestPublishedKeys(form)));\n }\n }\n /**\n * Sort out the latest record.\n */\n if (isLatest) {\n items.push(\n entity.putBatch({\n ...previous,\n ...latestKeys,\n GSI1_PK: null,\n GSI1_SK: null,\n TYPE: createFormLatestType()\n })\n );\n }\n }\n /**\n * Now save the batch data.\n */\n try {\n await batchWriteAll({\n table,\n items\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form revision from table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n };\n\n /**\n * We need to save form in:\n * - regular form record\n * - latest published form record\n * - latest form record - if form is latest one\n * - elasticsearch latest form record\n */\n const publishForm = async (\n params: FormBuilderStorageOperationsPublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n\n const latestKeys = createLatestKeys(form);\n\n const latestPublishedKeys = createLatestPublishedKeys(form);\n\n const gsiKeys = {\n GSI1_PK: createFormGSIPartitionKey(form),\n GSI1_SK: createGSISortKey(form.version)\n };\n\n const { locale, tenant, formId } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n /**\n * Update revision and latest published records\n */\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n ];\n /**\n * Update the latest form as well\n */\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n return form;\n };\n\n /**\n * We need to:\n * - update form revision record\n * - if latest published (LP) is current form, find the previously published record and update LP if there is some previously published, delete otherwise\n * - if is latest update the Elasticsearch record\n */\n const unpublishForm = async (\n params: FormBuilderStorageOperationsUnpublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const latestPublishedKeys = createLatestPublishedKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const latestPublishedForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n published: true\n }\n });\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n })\n ];\n\n if (isLatest) {\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n });\n }\n /**\n * In case previously published revision exists, replace current one with that one.\n * And if it does not, delete the record.\n */\n if (isLatestPublished) {\n const revisions = await listFormRevisions({\n where: {\n formId,\n tenant,\n locale,\n version_not: form.version,\n publishedOn_not: null\n },\n sort: [\"savedOn_DESC\"]\n });\n\n const previouslyPublishedRevision = revisions.shift();\n if (previouslyPublishedRevision) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedRevision,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(latestPublishedKeys));\n }\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n return {\n createForm,\n createFormFrom,\n updateForm,\n listForms,\n listFormRevisions,\n getForm,\n deleteForm,\n deleteFormRevision,\n publishForm,\n unpublishForm,\n createFormPartitionKey\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createFormStorageOperations","params","entity","table","plugins","formDynamoDbFields","byType","FormDynamoDbFieldPlugin","type","createFormPartitionKey","tenant","locale","createFormLatestPartitionKey","createFormLatestPublishedPartitionKey","createFormGSIPartitionKey","id","targetId","parseIdentifier","createRevisionSortKey","createFormLatestSortKey","formId","value","createLatestPublishedSortKey","createGSISortKey","version","createFormType","createFormLatestType","createFormLatestPublishedType","createRevisionKeys","form","PK","SK","createLatestKeys","createLatestPublishedKeys","createGSIKeys","GSI1_PK","GSI1_SK","createForm","revisionKeys","latestKeys","gsiKeys","items","putBatch","TYPE","batchWriteAll","ex","WebinyError","message","code","createFormFrom","original","latest","updateForm","latestForm","getForm","where","isLatestForm","push","published","partitionKey","sortKey","createIdentifier","keys","item","get","cleanupItem","listForms","sort","limit","initialWhere","after","queryAllParams","options","gte","results","queryAll","totalCount","length","filteredItems","filterItems","fields","sortedItems","sortItems","start","parseInt","decodeCursor","hasMoreItems","end","undefined","slice","cursor","encodeCursor","meta","listFormRevisions","index","deleteForm","beginsWith","hasLatestPublishedRecord","deleteItems","map","deleteBatch","deleteFormRevision","revisions","previous","latestPublishedForm","find","rev","isLatest","isLatestPublished","previouslyPublishedForm","filter","f","publishedOn","a","b","Date","getTime","shift","publishForm","latestPublishedKeys","unpublishForm","version_not","publishedOn_not","previouslyPublishedRevision"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n FbForm,\n FormBuilderStorageOperationsCreateFormFromParams,\n FormBuilderStorageOperationsCreateFormParams,\n FormBuilderStorageOperationsDeleteFormParams,\n FormBuilderStorageOperationsDeleteFormRevisionParams,\n FormBuilderStorageOperationsGetFormParams,\n FormBuilderStorageOperationsListFormRevisionsParams,\n FormBuilderStorageOperationsListFormRevisionsParamsWhere,\n FormBuilderStorageOperationsListFormsParams,\n FormBuilderStorageOperationsListFormsResponse,\n FormBuilderStorageOperationsPublishFormParams,\n FormBuilderStorageOperationsUnpublishFormParams,\n FormBuilderStorageOperationsUpdateFormParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderFormCreateGSIPartitionKeyParams,\n FormBuilderFormCreatePartitionKeyParams,\n FormBuilderFormStorageOperations\n} from \"~/types\";\nimport { FormDynamoDbFieldPlugin } from \"~/plugins/FormDynamoDbFieldPlugin\";\nimport { decodeCursor, encodeCursor } from \"@webiny/db-dynamodb/utils/cursor\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\ntype DbRecord<T = any> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\ninterface Keys {\n PK: string;\n SK: string;\n}\n\ninterface FormLatestSortKeyParams {\n id?: string;\n formId?: string;\n}\n\ninterface GsiKeys {\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\nexport interface CreateFormStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n plugins: PluginsContainer;\n}\n\nexport const createFormStorageOperations = (\n params: CreateFormStorageOperationsParams\n): FormBuilderFormStorageOperations => {\n const { entity, table, plugins } = params;\n\n const formDynamoDbFields = plugins.byType<FormDynamoDbFieldPlugin>(\n FormDynamoDbFieldPlugin.type\n );\n\n const createFormPartitionKey = (params: FormBuilderFormCreatePartitionKeyParams): string => {\n const { tenant, locale } = params;\n\n return `T#${tenant}#L#${locale}#FB#F`;\n };\n\n const createFormLatestPartitionKey = (\n params: FormBuilderFormCreatePartitionKeyParams\n ): string => {\n return `${createFormPartitionKey(params)}#L`;\n };\n\n const createFormLatestPublishedPartitionKey = (\n params: FormBuilderFormCreatePartitionKeyParams\n ): string => {\n return `${createFormPartitionKey(params)}#LP`;\n };\n\n const createFormGSIPartitionKey = (\n params: FormBuilderFormCreateGSIPartitionKeyParams\n ): string => {\n const { tenant, locale, id: targetId } = params;\n const { id } = parseIdentifier(targetId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n\n const createRevisionSortKey = ({ id }: { id: string }): string => {\n return `${id}`;\n };\n\n const createFormLatestSortKey = ({ id, formId }: FormLatestSortKeyParams): string => {\n const value = parseIdentifier(id || formId);\n return value.id;\n };\n\n const createLatestPublishedSortKey = ({ id, formId }: FormLatestSortKeyParams): string => {\n const value = parseIdentifier(id || formId);\n return value.id;\n };\n\n const createGSISortKey = (version: number) => {\n return `${version}`;\n };\n\n const createFormType = (): string => {\n return \"fb.form\";\n };\n\n const createFormLatestType = (): string => {\n return \"fb.form.latest\";\n };\n\n const createFormLatestPublishedType = (): string => {\n return \"fb.form.latestPublished\";\n };\n\n const createRevisionKeys = (form: FbForm): Keys => {\n return {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form)\n };\n };\n\n const createLatestKeys = (form: FbForm): Keys => {\n return {\n PK: createFormLatestPartitionKey(form),\n SK: createFormLatestSortKey(form)\n };\n };\n\n const createLatestPublishedKeys = (form: FbForm): Keys => {\n return {\n PK: createFormLatestPublishedPartitionKey(form),\n SK: createLatestPublishedSortKey(form)\n };\n };\n\n const createGSIKeys = (form: FbForm): GsiKeys => {\n return {\n GSI1_PK: createFormGSIPartitionKey(form),\n GSI1_SK: createGSISortKey(form.version)\n };\n };\n\n const createForm = async (\n params: FormBuilderStorageOperationsCreateFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n form\n }\n );\n }\n return form;\n };\n\n const createFormFrom = async (\n params: FormBuilderStorageOperationsCreateFormFromParams\n ): Promise<FbForm> => {\n const { form, original, latest } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form data in the table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latest\n }\n );\n }\n\n return form;\n };\n\n const updateForm = async (\n params: FormBuilderStorageOperationsUpdateFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n })\n ];\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latestForm\n }\n );\n }\n\n return form;\n };\n\n const getForm = async (\n params: FormBuilderStorageOperationsGetFormParams\n ): Promise<FbForm | null> => {\n const { where } = params;\n const { id, formId, latest, published, version } = where;\n if (latest && published) {\n throw new WebinyError(\"Cannot have both latest and published params.\");\n }\n let partitionKey: string;\n let sortKey: string;\n if (latest) {\n partitionKey = createFormLatestPartitionKey(where);\n sortKey = createFormLatestSortKey(where);\n } else if (published && !version) {\n /**\n * Because of the specifics how DynamoDB works, we must not load the published record if version is sent.\n */\n partitionKey = createFormLatestPublishedPartitionKey(where);\n sortKey = createLatestPublishedSortKey(where);\n } else if (id || version) {\n partitionKey = createFormPartitionKey(where);\n sortKey = createRevisionSortKey({\n id:\n id ||\n createIdentifier({\n id: formId as string,\n version: version as number\n })\n });\n } else {\n throw new WebinyError(\n \"Missing parameter to create a sort key.\",\n \"MISSING_WHERE_PARAMETER\",\n {\n where\n }\n );\n }\n\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n\n try {\n const item = await get<FbForm>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get form by keys.\",\n ex.code || \"GET_FORM_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const listForms = async (\n params: FormBuilderStorageOperationsListFormsParams\n ): Promise<FormBuilderStorageOperationsListFormsResponse> => {\n const { sort, limit, where: initialWhere, after } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormLatestPartitionKey(initialWhere),\n options: {\n gte: \" \"\n }\n };\n\n let results;\n try {\n results = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list forms.\",\n ex.code || \"LIST_FORMS_ERROR\",\n {\n where: initialWhere,\n partitionKey: queryAllParams.partitionKey\n }\n );\n }\n const totalCount = results.length;\n\n const where: Partial<FormBuilderStorageOperationsListFormsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.tenant;\n delete where.locale;\n\n const filteredItems = filterItems({\n plugins,\n items: results,\n where,\n fields: formDynamoDbFields\n });\n\n const sortedItems = sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n\n const start = parseInt(decodeCursor(after) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = sortedItems.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return {\n items,\n meta\n };\n };\n\n const listFormRevisions = async (\n params: FormBuilderStorageOperationsListFormRevisionsParams\n ): Promise<FbForm[]> => {\n const { where: initialWhere, sort } = params;\n const { id, formId, tenant, locale } = initialWhere;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormGSIPartitionKey({\n tenant,\n locale,\n id: formId || id\n }),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n\n let items: FbForm[] = [];\n try {\n items = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms by given params.\",\n ex.code || \"QUERY_FORMS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n const where: Partial<FormBuilderStorageOperationsListFormRevisionsParamsWhere> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.id;\n delete where.formId;\n delete where.tenant;\n delete where.locale;\n\n const filteredItems = filterItems({\n plugins,\n items,\n where,\n fields: formDynamoDbFields\n });\n return sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n };\n\n const deleteForm = async (\n params: FormBuilderStorageOperationsDeleteFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n let items: any[];\n /**\n * This will find all form records.\n */\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormPartitionKey(form),\n options: {\n beginsWith: form.formId\n }\n };\n try {\n items = await queryAll<DbRecord>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms and submissions by given params.\",\n ex.code || \"QUERY_FORM_AND_SUBMISSIONS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n let hasLatestPublishedRecord = false;\n\n const deleteItems = items.map(item => {\n if (!hasLatestPublishedRecord && item.published) {\n hasLatestPublishedRecord = true;\n }\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n if (hasLatestPublishedRecord) {\n deleteItems.push(entity.deleteBatch(createLatestPublishedKeys(items[0])));\n }\n\n deleteItems.push(entity.deleteBatch(createLatestKeys(items[0])));\n\n try {\n await batchWriteAll({\n table,\n items: deleteItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form and it's submissions.\",\n ex.code || \"DELETE_FORM_AND_SUBMISSIONS_ERROR\"\n );\n }\n return form;\n };\n /**\n * We need to:\n * - delete current revision\n * - get previously published revision and update the record if it exists or delete if it does not\n * - update latest record if current one is the latest\n */\n const deleteFormRevision = async (\n params: FormBuilderStorageOperationsDeleteFormRevisionParams\n ): Promise<FbForm> => {\n const { form, revisions, previous } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n\n const latestForm = revisions[0];\n const latestPublishedForm = revisions.find(rev => rev.published === true);\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [entity.deleteBatch(revisionKeys)];\n\n if (isLatest || isLatestPublished) {\n /**\n * Sort out the latest published record.\n */\n if (isLatestPublished) {\n const previouslyPublishedForm = revisions\n .filter(f => !!f.publishedOn && f.version !== form.version)\n .sort((a, b) => {\n return (\n new Date(b.publishedOn as string).getTime() -\n new Date(a.publishedOn as string).getTime()\n );\n })\n .shift();\n if (previouslyPublishedForm) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedForm,\n ...createLatestPublishedKeys(previouslyPublishedForm),\n GSI1_PK: null,\n GSI1_SK: null,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(createLatestPublishedKeys(form)));\n }\n }\n /**\n * Sort out the latest record.\n */\n if (isLatest) {\n items.push(\n entity.putBatch({\n ...previous,\n ...latestKeys,\n GSI1_PK: null,\n GSI1_SK: null,\n TYPE: createFormLatestType()\n })\n );\n }\n }\n /**\n * Now save the batch data.\n */\n try {\n await batchWriteAll({\n table,\n items\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form revision from table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n };\n\n /**\n * We need to save form in:\n * - regular form record\n * - latest published form record\n * - latest form record - if form is latest one\n * - elasticsearch latest form record\n */\n const publishForm = async (\n params: FormBuilderStorageOperationsPublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n\n const latestKeys = createLatestKeys(form);\n\n const latestPublishedKeys = createLatestPublishedKeys(form);\n\n const gsiKeys = {\n GSI1_PK: createFormGSIPartitionKey(form),\n GSI1_SK: createGSISortKey(form.version)\n };\n\n const { locale, tenant, formId } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n /**\n * Update revision and latest published records\n */\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n ];\n /**\n * Update the latest form as well\n */\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n return form;\n };\n\n /**\n * We need to:\n * - update form revision record\n * - if latest published (LP) is current form, find the previously published record and update LP if there is some previously published, delete otherwise\n * - if is latest update the Elasticsearch record\n */\n const unpublishForm = async (\n params: FormBuilderStorageOperationsUnpublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const latestPublishedKeys = createLatestPublishedKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const latestPublishedForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n published: true\n }\n });\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n })\n ];\n\n if (isLatest) {\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n });\n }\n /**\n * In case previously published revision exists, replace current one with that one.\n * And if it does not, delete the record.\n */\n if (isLatestPublished) {\n const revisions = await listFormRevisions({\n where: {\n formId,\n tenant,\n locale,\n version_not: form.version,\n publishedOn_not: null\n },\n sort: [\"savedOn_DESC\"]\n });\n\n const previouslyPublishedRevision = revisions.shift();\n if (previouslyPublishedRevision) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedRevision,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(latestPublishedKeys));\n }\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n return {\n createForm,\n createFormFrom,\n updateForm,\n listForms,\n listFormRevisions,\n getForm,\n deleteForm,\n deleteFormRevision,\n publishForm,\n unpublishForm,\n createFormPartitionKey\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,49 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createSettingsStorageOperations = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
15
|
-
|
|
16
11
|
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
17
|
-
|
|
18
12
|
const createSettingsStorageOperations = params => {
|
|
19
13
|
const {
|
|
20
14
|
entity
|
|
21
15
|
} = params;
|
|
22
|
-
|
|
23
16
|
const createSettingsPartitionKey = ({
|
|
24
17
|
tenant,
|
|
25
18
|
locale
|
|
26
19
|
}) => {
|
|
27
20
|
return `T#${tenant}#L#${locale}#FB#SETTINGS`;
|
|
28
21
|
};
|
|
29
|
-
|
|
30
22
|
const createSettingsSortKey = () => {
|
|
31
23
|
return "default";
|
|
32
24
|
};
|
|
33
|
-
|
|
34
25
|
const createKeys = params => {
|
|
35
26
|
return {
|
|
36
27
|
PK: createSettingsPartitionKey(params),
|
|
37
28
|
SK: createSettingsSortKey()
|
|
38
29
|
};
|
|
39
30
|
};
|
|
40
|
-
|
|
41
31
|
const createSettings = async params => {
|
|
42
32
|
const {
|
|
43
33
|
settings
|
|
44
34
|
} = params;
|
|
45
35
|
const keys = createKeys(settings);
|
|
46
|
-
|
|
47
36
|
try {
|
|
48
37
|
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), keys));
|
|
49
38
|
return settings;
|
|
@@ -54,10 +43,8 @@ const createSettingsStorageOperations = params => {
|
|
|
54
43
|
});
|
|
55
44
|
}
|
|
56
45
|
};
|
|
57
|
-
|
|
58
46
|
const getSettings = async params => {
|
|
59
47
|
const keys = createKeys(params);
|
|
60
|
-
|
|
61
48
|
try {
|
|
62
49
|
const item = await (0, _get.get)({
|
|
63
50
|
entity,
|
|
@@ -70,14 +57,12 @@ const createSettingsStorageOperations = params => {
|
|
|
70
57
|
});
|
|
71
58
|
}
|
|
72
59
|
};
|
|
73
|
-
|
|
74
60
|
const updateSettings = async params => {
|
|
75
61
|
const {
|
|
76
62
|
settings,
|
|
77
63
|
original
|
|
78
64
|
} = params;
|
|
79
65
|
const keys = createKeys(settings);
|
|
80
|
-
|
|
81
66
|
try {
|
|
82
67
|
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), keys));
|
|
83
68
|
return settings;
|
|
@@ -89,13 +74,11 @@ const createSettingsStorageOperations = params => {
|
|
|
89
74
|
});
|
|
90
75
|
}
|
|
91
76
|
};
|
|
92
|
-
|
|
93
77
|
const deleteSettings = async params => {
|
|
94
78
|
const {
|
|
95
79
|
settings
|
|
96
80
|
} = params;
|
|
97
81
|
const keys = createKeys(settings);
|
|
98
|
-
|
|
99
82
|
try {
|
|
100
83
|
await entity.delete();
|
|
101
84
|
} catch (ex) {
|
|
@@ -104,7 +87,6 @@ const createSettingsStorageOperations = params => {
|
|
|
104
87
|
});
|
|
105
88
|
}
|
|
106
89
|
};
|
|
107
|
-
|
|
108
90
|
return {
|
|
109
91
|
createSettings,
|
|
110
92
|
getSettings,
|
|
@@ -114,5 +96,4 @@ const createSettingsStorageOperations = params => {
|
|
|
114
96
|
createSettingsSortKey
|
|
115
97
|
};
|
|
116
98
|
};
|
|
117
|
-
|
|
118
99
|
exports.createSettingsStorageOperations = createSettingsStorageOperations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSettingsStorageOperations","params","entity","createSettingsPartitionKey","tenant","locale","createSettingsSortKey","createKeys","PK","SK","createSettings","settings","keys","put","ex","WebinyError","message","code","getSettings","item","get","cleanupItem","updateSettings","original","deleteSettings","delete"],"sources":["index.ts"],"sourcesContent":["import {\n FormBuilderStorageOperationsCreateSettingsParams,\n FormBuilderStorageOperationsDeleteSettingsParams,\n FormBuilderStorageOperationsGetSettingsParams,\n FormBuilderStorageOperationsUpdateSettingsParams,\n Settings\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport {\n FormBuilderSettingsStorageOperations,\n FormBuilderSettingsStorageOperationsCreatePartitionKeyParams\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n}\n\nexport const createSettingsStorageOperations = (\n params: CreateSettingsStorageOperationsParams\n): FormBuilderSettingsStorageOperations => {\n const { entity } = params;\n\n const createSettingsPartitionKey = ({\n tenant,\n locale\n }: FormBuilderSettingsStorageOperationsCreatePartitionKeyParams): string => {\n return `T#${tenant}#L#${locale}#FB#SETTINGS`;\n };\n\n const createSettingsSortKey = (): string => {\n return \"default\";\n };\n\n const createKeys = (params: FormBuilderSettingsStorageOperationsCreatePartitionKeyParams) => {\n return {\n PK: createSettingsPartitionKey(params),\n SK: createSettingsSortKey()\n };\n };\n\n const createSettings = async (\n params: FormBuilderStorageOperationsCreateSettingsParams\n ): Promise<Settings> => {\n const { settings } = params;\n const keys = createKeys(settings);\n\n try {\n await entity.put({\n ...settings,\n ...keys\n });\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create the settings record by given keys.\",\n ex.code || \"CREATE_SETTINGS_ERROR\",\n {\n keys,\n settings\n }\n );\n }\n };\n\n const getSettings = async (\n params: FormBuilderStorageOperationsGetSettingsParams\n ): Promise<Settings | null> => {\n const keys = createKeys(params);\n\n try {\n const item = await get<Settings>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get the settings record by given keys.\",\n ex.code || \"LOAD_SETTINGS_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const updateSettings = async (\n params: FormBuilderStorageOperationsUpdateSettingsParams\n ): Promise<Settings> => {\n const { settings, original } = params;\n const keys = createKeys(settings);\n\n try {\n await entity.put({\n ...settings,\n ...keys\n });\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update the settings record by given keys.\",\n ex.code || \"UPDATE_SETTINGS_ERROR\",\n {\n keys,\n original,\n settings\n }\n );\n }\n };\n\n const deleteSettings = async (\n params: FormBuilderStorageOperationsDeleteSettingsParams\n ): Promise<void> => {\n const { settings } = params;\n const keys = createKeys(settings);\n try {\n await entity.delete();\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the settings record by given keys.\",\n ex.code || \"DELETE_SETTINGS_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n return {\n createSettings,\n getSettings,\n updateSettings,\n deleteSettings,\n createSettingsPartitionKey,\n createSettingsSortKey\n };\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["createSettingsStorageOperations","params","entity","createSettingsPartitionKey","tenant","locale","createSettingsSortKey","createKeys","PK","SK","createSettings","settings","keys","put","ex","WebinyError","message","code","getSettings","item","get","cleanupItem","updateSettings","original","deleteSettings","delete"],"sources":["index.ts"],"sourcesContent":["import {\n FormBuilderStorageOperationsCreateSettingsParams,\n FormBuilderStorageOperationsDeleteSettingsParams,\n FormBuilderStorageOperationsGetSettingsParams,\n FormBuilderStorageOperationsUpdateSettingsParams,\n Settings\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport {\n FormBuilderSettingsStorageOperations,\n FormBuilderSettingsStorageOperationsCreatePartitionKeyParams\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n}\n\nexport const createSettingsStorageOperations = (\n params: CreateSettingsStorageOperationsParams\n): FormBuilderSettingsStorageOperations => {\n const { entity } = params;\n\n const createSettingsPartitionKey = ({\n tenant,\n locale\n }: FormBuilderSettingsStorageOperationsCreatePartitionKeyParams): string => {\n return `T#${tenant}#L#${locale}#FB#SETTINGS`;\n };\n\n const createSettingsSortKey = (): string => {\n return \"default\";\n };\n\n const createKeys = (params: FormBuilderSettingsStorageOperationsCreatePartitionKeyParams) => {\n return {\n PK: createSettingsPartitionKey(params),\n SK: createSettingsSortKey()\n };\n };\n\n const createSettings = async (\n params: FormBuilderStorageOperationsCreateSettingsParams\n ): Promise<Settings> => {\n const { settings } = params;\n const keys = createKeys(settings);\n\n try {\n await entity.put({\n ...settings,\n ...keys\n });\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create the settings record by given keys.\",\n ex.code || \"CREATE_SETTINGS_ERROR\",\n {\n keys,\n settings\n }\n );\n }\n };\n\n const getSettings = async (\n params: FormBuilderStorageOperationsGetSettingsParams\n ): Promise<Settings | null> => {\n const keys = createKeys(params);\n\n try {\n const item = await get<Settings>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get the settings record by given keys.\",\n ex.code || \"LOAD_SETTINGS_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const updateSettings = async (\n params: FormBuilderStorageOperationsUpdateSettingsParams\n ): Promise<Settings> => {\n const { settings, original } = params;\n const keys = createKeys(settings);\n\n try {\n await entity.put({\n ...settings,\n ...keys\n });\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update the settings record by given keys.\",\n ex.code || \"UPDATE_SETTINGS_ERROR\",\n {\n keys,\n original,\n settings\n }\n );\n }\n };\n\n const deleteSettings = async (\n params: FormBuilderStorageOperationsDeleteSettingsParams\n ): Promise<void> => {\n const { settings } = params;\n const keys = createKeys(settings);\n try {\n await entity.delete();\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the settings record by given keys.\",\n ex.code || \"DELETE_SETTINGS_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n return {\n createSettings,\n getSettings,\n updateSettings,\n deleteSettings,\n createSettingsPartitionKey,\n createSettingsSortKey\n };\n};\n"],"mappings":";;;;;;;;AAYA;AACA;AACA;AAOO,MAAMA,+BAA+B,GACxCC,MAA6C,IACN;EACvC,MAAM;IAAEC;EAAO,CAAC,GAAGD,MAAM;EAEzB,MAAME,0BAA0B,GAAG,CAAC;IAChCC,MAAM;IACNC;EAC0D,CAAC,KAAa;IACxE,OAAQ,KAAID,MAAO,MAAKC,MAAO,cAAa;EAChD,CAAC;EAED,MAAMC,qBAAqB,GAAG,MAAc;IACxC,OAAO,SAAS;EACpB,CAAC;EAED,MAAMC,UAAU,GAAIN,MAAoE,IAAK;IACzF,OAAO;MACHO,EAAE,EAAEL,0BAA0B,CAACF,MAAM,CAAC;MACtCQ,EAAE,EAAEH,qBAAqB;IAC7B,CAAC;EACL,CAAC;EAED,MAAMI,cAAc,GAAG,MACnBT,MAAwD,IACpC;IACpB,MAAM;MAAEU;IAAS,CAAC,GAAGV,MAAM;IAC3B,MAAMW,IAAI,GAAGL,UAAU,CAACI,QAAQ,CAAC;IAEjC,IAAI;MACA,MAAMT,MAAM,CAACW,GAAG,6DACTF,QAAQ,GACRC,IAAI,EACT;MACF,OAAOD,QAAQ;IACnB,CAAC,CAAC,OAAOG,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,qDAAqD,EACnEF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIL,IAAI;QACJD;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMO,WAAW,GAAG,MAChBjB,MAAqD,IAC1B;IAC3B,MAAMW,IAAI,GAAGL,UAAU,CAACN,MAAM,CAAC;IAE/B,IAAI;MACA,MAAMkB,IAAI,GAAG,MAAM,IAAAC,QAAG,EAAW;QAAElB,MAAM;QAAEU;MAAK,CAAC,CAAC;MAClD,OAAO,IAAAS,oBAAW,EAACnB,MAAM,EAAEiB,IAAI,CAAC;IACpC,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,kDAAkD,EAChEF,EAAE,CAACG,IAAI,IAAI,qBAAqB,EAChC;QACIL;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMU,cAAc,GAAG,MACnBrB,MAAwD,IACpC;IACpB,MAAM;MAAEU,QAAQ;MAAEY;IAAS,CAAC,GAAGtB,MAAM;IACrC,MAAMW,IAAI,GAAGL,UAAU,CAACI,QAAQ,CAAC;IAEjC,IAAI;MACA,MAAMT,MAAM,CAACW,GAAG,6DACTF,QAAQ,GACRC,IAAI,EACT;MACF,OAAOD,QAAQ;IACnB,CAAC,CAAC,OAAOG,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,qDAAqD,EACnEF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIL,IAAI;QACJW,QAAQ;QACRZ;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMa,cAAc,GAAG,MACnBvB,MAAwD,IACxC;IAChB,MAAM;MAAEU;IAAS,CAAC,GAAGV,MAAM;IAC3B,MAAMW,IAAI,GAAGL,UAAU,CAACI,QAAQ,CAAC;IACjC,IAAI;MACA,MAAMT,MAAM,CAACuB,MAAM,EAAE;IACzB,CAAC,CAAC,OAAOX,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,qDAAqD,EACnEF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIL;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,OAAO;IACHF,cAAc;IACdQ,WAAW;IACXI,cAAc;IACdE,cAAc;IACdrB,0BAA0B;IAC1BG;EACJ,CAAC;AACL,CAAC;AAAC"}
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _FormSubmissionDynamoDbFieldPlugin = require("../../plugins/FormSubmissionDynamoDbFieldPlugin");
|
|
9
|
-
|
|
10
8
|
var _default = () => [new _FormSubmissionDynamoDbFieldPlugin.FormSubmissionDynamoDbFieldPlugin({
|
|
11
9
|
field: "createdOn",
|
|
12
10
|
type: "date"
|
|
@@ -14,5 +12,4 @@ var _default = () => [new _FormSubmissionDynamoDbFieldPlugin.FormSubmissionDynam
|
|
|
14
12
|
field: "savedOn",
|
|
15
13
|
type: "date"
|
|
16
14
|
})];
|
|
17
|
-
|
|
18
15
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FormSubmissionDynamoDbFieldPlugin","field","type"],"sources":["fields.ts"],"sourcesContent":["import { FormSubmissionDynamoDbFieldPlugin } from \"~/plugins/FormSubmissionDynamoDbFieldPlugin\";\n\nexport default () => [\n new FormSubmissionDynamoDbFieldPlugin({\n field: \"createdOn\",\n type: \"date\"\n }),\n new FormSubmissionDynamoDbFieldPlugin({\n field: \"savedOn\",\n type: \"date\"\n })\n];\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["FormSubmissionDynamoDbFieldPlugin","field","type"],"sources":["fields.ts"],"sourcesContent":["import { FormSubmissionDynamoDbFieldPlugin } from \"~/plugins/FormSubmissionDynamoDbFieldPlugin\";\n\nexport default () => [\n new FormSubmissionDynamoDbFieldPlugin({\n field: \"createdOn\",\n type: \"date\"\n }),\n new FormSubmissionDynamoDbFieldPlugin({\n field: \"savedOn\",\n type: \"date\"\n })\n];\n"],"mappings":";;;;;;AAAA;AAAgG,eAEjF,MAAM,CACjB,IAAIA,oEAAiC,CAAC;EAClCC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE;AACV,CAAC,CAAC,EACF,IAAIF,oEAAiC,CAAC;EAClCC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACV,CAAC,CAAC,CACL;AAAA"}
|
|
@@ -1,38 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createSubmissionStorageOperations = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
15
|
-
|
|
16
11
|
var _utils = require("@webiny/utils");
|
|
17
|
-
|
|
18
12
|
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
19
|
-
|
|
20
13
|
var _cursor = require("@webiny/db-dynamodb/utils/cursor");
|
|
21
|
-
|
|
22
14
|
var _sort = require("@webiny/db-dynamodb/utils/sort");
|
|
23
|
-
|
|
24
15
|
var _filter = require("@webiny/db-dynamodb/utils/filter");
|
|
25
|
-
|
|
26
16
|
var _FormSubmissionDynamoDbFieldPlugin = require("../../plugins/FormSubmissionDynamoDbFieldPlugin");
|
|
27
|
-
|
|
28
17
|
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
29
|
-
|
|
30
18
|
const createSubmissionStorageOperations = params => {
|
|
31
19
|
const {
|
|
32
20
|
entity,
|
|
33
21
|
plugins
|
|
34
22
|
} = params;
|
|
35
|
-
|
|
36
23
|
const createSubmissionPartitionKey = params => {
|
|
37
24
|
const {
|
|
38
25
|
tenant,
|
|
@@ -44,15 +31,12 @@ const createSubmissionStorageOperations = params => {
|
|
|
44
31
|
} = (0, _utils.parseIdentifier)(formId);
|
|
45
32
|
return `T#${tenant}#L#${locale}#FB#FS#${id}`;
|
|
46
33
|
};
|
|
47
|
-
|
|
48
34
|
const createSubmissionSortKey = id => {
|
|
49
35
|
return id;
|
|
50
36
|
};
|
|
51
|
-
|
|
52
37
|
const createSubmissionType = () => {
|
|
53
38
|
return "fb.formSubmission";
|
|
54
39
|
};
|
|
55
|
-
|
|
56
40
|
const createSubmission = async params => {
|
|
57
41
|
const {
|
|
58
42
|
submission,
|
|
@@ -62,7 +46,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
62
46
|
PK: createSubmissionPartitionKey(form),
|
|
63
47
|
SK: createSubmissionSortKey(submission.id)
|
|
64
48
|
};
|
|
65
|
-
|
|
66
49
|
try {
|
|
67
50
|
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, submission), keys), {}, {
|
|
68
51
|
TYPE: createSubmissionType()
|
|
@@ -74,10 +57,8 @@ const createSubmissionStorageOperations = params => {
|
|
|
74
57
|
keys
|
|
75
58
|
});
|
|
76
59
|
}
|
|
77
|
-
|
|
78
60
|
return submission;
|
|
79
61
|
};
|
|
80
|
-
|
|
81
62
|
const updateSubmission = async params => {
|
|
82
63
|
const {
|
|
83
64
|
submission,
|
|
@@ -88,7 +69,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
88
69
|
PK: createSubmissionPartitionKey(form),
|
|
89
70
|
SK: createSubmissionSortKey(submission.id)
|
|
90
71
|
};
|
|
91
|
-
|
|
92
72
|
try {
|
|
93
73
|
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, submission), keys), {}, {
|
|
94
74
|
TYPE: createSubmissionType()
|
|
@@ -103,7 +83,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
103
83
|
});
|
|
104
84
|
}
|
|
105
85
|
};
|
|
106
|
-
|
|
107
86
|
const deleteSubmission = async params => {
|
|
108
87
|
const {
|
|
109
88
|
submission,
|
|
@@ -113,7 +92,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
113
92
|
PK: createSubmissionPartitionKey(form),
|
|
114
93
|
SK: createSubmissionSortKey(submission.id)
|
|
115
94
|
};
|
|
116
|
-
|
|
117
95
|
try {
|
|
118
96
|
await entity.delete(keys);
|
|
119
97
|
} catch (ex) {
|
|
@@ -123,10 +101,8 @@ const createSubmissionStorageOperations = params => {
|
|
|
123
101
|
keys
|
|
124
102
|
});
|
|
125
103
|
}
|
|
126
|
-
|
|
127
104
|
return submission;
|
|
128
105
|
};
|
|
129
|
-
|
|
130
106
|
const listSubmissions = async params => {
|
|
131
107
|
const {
|
|
132
108
|
where: initialWhere,
|
|
@@ -143,7 +119,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
143
119
|
/**
|
|
144
120
|
* We need to remove conditions so we do not filter by them again.
|
|
145
121
|
*/
|
|
146
|
-
|
|
147
122
|
delete where.tenant;
|
|
148
123
|
delete where.locale;
|
|
149
124
|
delete where.formId;
|
|
@@ -160,7 +135,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
160
135
|
}
|
|
161
136
|
};
|
|
162
137
|
let results;
|
|
163
|
-
|
|
164
138
|
try {
|
|
165
139
|
results = await (0, _query.queryAll)(queryAllParams);
|
|
166
140
|
} catch (ex) {
|
|
@@ -169,7 +143,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
169
143
|
partitionKey: queryAllParams.partitionKey
|
|
170
144
|
});
|
|
171
145
|
}
|
|
172
|
-
|
|
173
146
|
const fields = plugins.byType(_FormSubmissionDynamoDbFieldPlugin.FormSubmissionDynamoDbFieldPlugin.type);
|
|
174
147
|
const filteredSubmissions = (0, _filter.filterItems)({
|
|
175
148
|
plugins,
|
|
@@ -191,7 +164,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
191
164
|
* Although we do not need a cursor here, we will use it as such to keep it standardized.
|
|
192
165
|
* Number is simply encoded.
|
|
193
166
|
*/
|
|
194
|
-
|
|
195
167
|
const cursor = items.length > 0 ? (0, _cursor.encodeCursor)(start + limit) : null;
|
|
196
168
|
const meta = {
|
|
197
169
|
hasMoreItems,
|
|
@@ -203,7 +175,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
203
175
|
meta
|
|
204
176
|
};
|
|
205
177
|
};
|
|
206
|
-
|
|
207
178
|
const getSubmission = async params => {
|
|
208
179
|
const {
|
|
209
180
|
where
|
|
@@ -212,7 +183,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
212
183
|
PK: createSubmissionPartitionKey(where),
|
|
213
184
|
SK: createSubmissionSortKey(where.id)
|
|
214
185
|
};
|
|
215
|
-
|
|
216
186
|
try {
|
|
217
187
|
const item = await (0, _get.get)({
|
|
218
188
|
entity,
|
|
@@ -226,7 +196,6 @@ const createSubmissionStorageOperations = params => {
|
|
|
226
196
|
});
|
|
227
197
|
}
|
|
228
198
|
};
|
|
229
|
-
|
|
230
199
|
return {
|
|
231
200
|
createSubmission,
|
|
232
201
|
deleteSubmission,
|
|
@@ -237,5 +206,4 @@ const createSubmissionStorageOperations = params => {
|
|
|
237
206
|
createSubmissionSortKey
|
|
238
207
|
};
|
|
239
208
|
};
|
|
240
|
-
|
|
241
209
|
exports.createSubmissionStorageOperations = createSubmissionStorageOperations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSubmissionStorageOperations","params","entity","plugins","createSubmissionPartitionKey","tenant","locale","formId","id","parseIdentifier","createSubmissionSortKey","createSubmissionType","createSubmission","submission","form","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","updateSubmission","original","deleteSubmission","delete","listSubmissions","where","initialWhere","sort","limit","after","queryAllParams","partitionKey","options","gte","reverse","results","queryAll","fields","byType","FormSubmissionDynamoDbFieldPlugin","type","filteredSubmissions","filterItems","items","sortedSubmissions","sortItems","totalCount","length","start","parseInt","decodeCursor","hasMoreItems","end","undefined","slice","cursor","encodeCursor","meta","getSubmission","item","get","cleanupItem"],"sources":["index.ts"],"sourcesContent":["import {\n FbSubmission,\n FormBuilderStorageOperationsCreateSubmissionParams,\n FormBuilderStorageOperationsDeleteSubmissionParams,\n FormBuilderStorageOperationsGetSubmissionParams,\n FormBuilderStorageOperationsListSubmissionsParams,\n FormBuilderStorageOperationsListSubmissionsResponse,\n FormBuilderStorageOperationsUpdateSubmissionParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport WebinyError from \"@webiny/error\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderSubmissionStorageOperations,\n FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n} from \"~/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { decodeCursor, encodeCursor } from \"@webiny/db-dynamodb/utils/cursor\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { FormSubmissionDynamoDbFieldPlugin } from \"~/plugins/FormSubmissionDynamoDbFieldPlugin\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\nexport interface CreateSubmissionStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n plugins: PluginsContainer;\n}\n\nexport const createSubmissionStorageOperations = (\n params: CreateSubmissionStorageOperationsParams\n): FormBuilderSubmissionStorageOperations => {\n const { entity, plugins } = params;\n\n const createSubmissionPartitionKey = (\n params: FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n ) => {\n const { tenant, locale, formId } = params;\n\n const { id } = parseIdentifier(formId);\n\n return `T#${tenant}#L#${locale}#FB#FS#${id}`;\n };\n const createSubmissionSortKey = (id: string) => {\n return id;\n };\n\n const createSubmissionType = () => {\n return \"fb.formSubmission\";\n };\n\n const createSubmission = async (\n params: FormBuilderStorageOperationsCreateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n\n const updateSubmission = async (\n params: FormBuilderStorageOperationsUpdateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form, original } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n return submission;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n original,\n form,\n keys\n }\n );\n }\n };\n\n const deleteSubmission = async (\n params: FormBuilderStorageOperationsDeleteSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form submission from DynamoDB.\",\n ex.code || \"DELETE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n\n const listSubmissions = async (\n params: FormBuilderStorageOperationsListSubmissionsParams\n ): Promise<FormBuilderStorageOperationsListSubmissionsResponse> => {\n const { where: initialWhere, sort, limit = 100000, after } = params;\n\n const { tenant, locale, formId } = initialWhere;\n\n const where: Partial<FormBuilderStorageOperationsListSubmissionsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.tenant;\n delete where.locale;\n delete where.formId;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createSubmissionPartitionKey({\n tenant,\n locale,\n formId\n }),\n options: {\n gte: \" \",\n reverse: true\n }\n };\n\n let results;\n try {\n results = await queryAll<FbSubmission>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list form submissions.\",\n ex.code || \"LIST_SUBMISSIONS_ERROR\",\n {\n where: initialWhere,\n partitionKey: queryAllParams.partitionKey\n }\n );\n }\n\n const fields = plugins.byType<FormSubmissionDynamoDbFieldPlugin>(\n FormSubmissionDynamoDbFieldPlugin.type\n );\n\n const filteredSubmissions = filterItems({\n plugins,\n items: results,\n where,\n fields\n });\n\n const sortedSubmissions = sortItems({\n items: filteredSubmissions,\n sort,\n fields\n });\n\n const totalCount = sortedSubmissions.length;\n const start = parseInt(decodeCursor(after) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = sortedSubmissions.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return {\n items,\n meta\n };\n };\n\n const getSubmission = async (\n params: FormBuilderStorageOperationsGetSubmissionParams\n ): Promise<FbSubmission | null> => {\n const { where } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey(where),\n SK: createSubmissionSortKey(where.id)\n };\n\n try {\n const item = await get<FbSubmission>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not oad submission.\",\n ex.code || \"GET_SUBMISSION_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n return {\n createSubmission,\n deleteSubmission,\n updateSubmission,\n listSubmissions,\n getSubmission,\n createSubmissionPartitionKey,\n createSubmissionSortKey\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createSubmissionStorageOperations","params","entity","plugins","createSubmissionPartitionKey","tenant","locale","formId","id","parseIdentifier","createSubmissionSortKey","createSubmissionType","createSubmission","submission","form","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","updateSubmission","original","deleteSubmission","delete","listSubmissions","where","initialWhere","sort","limit","after","queryAllParams","partitionKey","options","gte","reverse","results","queryAll","fields","byType","FormSubmissionDynamoDbFieldPlugin","type","filteredSubmissions","filterItems","items","sortedSubmissions","sortItems","totalCount","length","start","parseInt","decodeCursor","hasMoreItems","end","undefined","slice","cursor","encodeCursor","meta","getSubmission","item","get","cleanupItem"],"sources":["index.ts"],"sourcesContent":["import {\n FbSubmission,\n FormBuilderStorageOperationsCreateSubmissionParams,\n FormBuilderStorageOperationsDeleteSubmissionParams,\n FormBuilderStorageOperationsGetSubmissionParams,\n FormBuilderStorageOperationsListSubmissionsParams,\n FormBuilderStorageOperationsListSubmissionsResponse,\n FormBuilderStorageOperationsUpdateSubmissionParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport WebinyError from \"@webiny/error\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderSubmissionStorageOperations,\n FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n} from \"~/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { decodeCursor, encodeCursor } from \"@webiny/db-dynamodb/utils/cursor\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { FormSubmissionDynamoDbFieldPlugin } from \"~/plugins/FormSubmissionDynamoDbFieldPlugin\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\nexport interface CreateSubmissionStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n plugins: PluginsContainer;\n}\n\nexport const createSubmissionStorageOperations = (\n params: CreateSubmissionStorageOperationsParams\n): FormBuilderSubmissionStorageOperations => {\n const { entity, plugins } = params;\n\n const createSubmissionPartitionKey = (\n params: FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams\n ) => {\n const { tenant, locale, formId } = params;\n\n const { id } = parseIdentifier(formId);\n\n return `T#${tenant}#L#${locale}#FB#FS#${id}`;\n };\n const createSubmissionSortKey = (id: string) => {\n return id;\n };\n\n const createSubmissionType = () => {\n return \"fb.formSubmission\";\n };\n\n const createSubmission = async (\n params: FormBuilderStorageOperationsCreateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n\n const updateSubmission = async (\n params: FormBuilderStorageOperationsUpdateSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form, original } = params;\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.put({\n ...submission,\n ...keys,\n TYPE: createSubmissionType()\n });\n return submission;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form submission in the DynamoDB.\",\n ex.code || \"UPDATE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n original,\n form,\n keys\n }\n );\n }\n };\n\n const deleteSubmission = async (\n params: FormBuilderStorageOperationsDeleteSubmissionParams\n ): Promise<FbSubmission> => {\n const { submission, form } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey(form),\n SK: createSubmissionSortKey(submission.id)\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form submission from DynamoDB.\",\n ex.code || \"DELETE_FORM_SUBMISSION_ERROR\",\n {\n submission,\n form,\n keys\n }\n );\n }\n\n return submission;\n };\n\n const listSubmissions = async (\n params: FormBuilderStorageOperationsListSubmissionsParams\n ): Promise<FormBuilderStorageOperationsListSubmissionsResponse> => {\n const { where: initialWhere, sort, limit = 100000, after } = params;\n\n const { tenant, locale, formId } = initialWhere;\n\n const where: Partial<FormBuilderStorageOperationsListSubmissionsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.tenant;\n delete where.locale;\n delete where.formId;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createSubmissionPartitionKey({\n tenant,\n locale,\n formId\n }),\n options: {\n gte: \" \",\n reverse: true\n }\n };\n\n let results;\n try {\n results = await queryAll<FbSubmission>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list form submissions.\",\n ex.code || \"LIST_SUBMISSIONS_ERROR\",\n {\n where: initialWhere,\n partitionKey: queryAllParams.partitionKey\n }\n );\n }\n\n const fields = plugins.byType<FormSubmissionDynamoDbFieldPlugin>(\n FormSubmissionDynamoDbFieldPlugin.type\n );\n\n const filteredSubmissions = filterItems({\n plugins,\n items: results,\n where,\n fields\n });\n\n const sortedSubmissions = sortItems({\n items: filteredSubmissions,\n sort,\n fields\n });\n\n const totalCount = sortedSubmissions.length;\n const start = parseInt(decodeCursor(after) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = sortedSubmissions.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return {\n items,\n meta\n };\n };\n\n const getSubmission = async (\n params: FormBuilderStorageOperationsGetSubmissionParams\n ): Promise<FbSubmission | null> => {\n const { where } = params;\n\n const keys = {\n PK: createSubmissionPartitionKey(where),\n SK: createSubmissionSortKey(where.id)\n };\n\n try {\n const item = await get<FbSubmission>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not oad submission.\",\n ex.code || \"GET_SUBMISSION_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n return {\n createSubmission,\n deleteSubmission,\n updateSubmission,\n listSubmissions,\n getSubmission,\n createSubmissionPartitionKey,\n createSubmissionSortKey\n };\n};\n"],"mappings":"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"}
|