@webiny/api-headless-cms-ddb-es 5.24.0-beta.0 → 5.25.0-beta.1
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/configurations.js.map +1 -0
- package/definitions/entry.js.map +1 -0
- package/definitions/entryElasticsearch.js.map +1 -0
- package/definitions/group.js.map +1 -0
- package/definitions/model.js.map +1 -0
- package/definitions/settings.js.map +1 -0
- package/definitions/system.js.map +1 -0
- package/definitions/table.js.map +1 -0
- package/definitions/tableElasticsearch.js.map +1 -0
- package/dynamoDb/index.js.map +1 -0
- package/dynamoDb/storage/date.js.map +1 -0
- package/dynamoDb/storage/longText.js +1 -0
- package/dynamoDb/storage/longText.js.map +1 -0
- package/dynamoDb/storage/richText.js +13 -2
- package/dynamoDb/storage/richText.js.map +1 -0
- package/elasticsearch/index.js.map +1 -0
- package/elasticsearch/indexing/dateTimeIndexing.js.map +1 -0
- package/elasticsearch/indexing/defaultFieldIndexing.js.map +1 -0
- package/elasticsearch/indexing/index.js.map +1 -0
- package/elasticsearch/indexing/longTextIndexing.js.map +1 -0
- package/elasticsearch/indexing/numberIndexing.js.map +1 -0
- package/elasticsearch/indexing/objectIndexing.js +16 -2
- package/elasticsearch/indexing/objectIndexing.js.map +1 -0
- package/elasticsearch/indexing/richTextIndexing.js.map +1 -0
- package/elasticsearch/search/index.js.map +1 -0
- package/elasticsearch/search/refSearch.js.map +1 -0
- package/elasticsearch/search/timeSearch.js +3 -1
- package/elasticsearch/search/timeSearch.js.map +1 -0
- package/helpers/createElasticsearchQueryBody.js +9 -8
- package/helpers/createElasticsearchQueryBody.js.map +1 -0
- package/helpers/entryIndexHelpers.js.map +1 -0
- package/helpers/fields.js.map +1 -0
- package/helpers/index.js.map +1 -0
- package/helpers/operatorPluginsList.js.map +1 -0
- package/helpers/searchPluginsList.js.map +1 -0
- package/helpers/transformValueForSearch.js.map +1 -0
- package/index.js.map +1 -0
- package/operations/entry/dataLoaders.d.ts +4 -0
- package/operations/entry/dataLoaders.js +10 -0
- package/operations/entry/dataLoaders.js.map +1 -0
- package/operations/entry/elasticsearchFields.js.map +1 -0
- package/operations/entry/fields.js.map +1 -0
- package/operations/entry/index.js +7 -27
- package/operations/entry/index.js.map +1 -0
- package/operations/entry/keys.js.map +1 -0
- package/operations/group/index.js.map +1 -0
- package/operations/model/index.js.map +1 -0
- package/operations/settings/index.js.map +1 -0
- package/operations/system/createElasticsearchTemplate.js.map +1 -0
- package/operations/system/index.js.map +1 -0
- package/package.json +17 -17
- package/plugins/CmsEntryElasticsearchBodyModifierPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchFieldPlugin.d.ts +2 -2
- package/plugins/CmsEntryElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.d.ts +1 -1
- package/plugins/CmsEntryElasticsearchQueryBuilderValueSearchPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchQueryModifierPlugin.js.map +1 -0
- package/plugins/CmsEntryElasticsearchSortModifierPlugin.js.map +1 -0
- package/types.js.map +1 -0
- package/upgrades/index.js.map +1 -0
- package/upgrades/utils.js.map +1 -0
- package/upgrades/v5.0.0/cleanDatabaseRecord.d.ts +3 -3
- package/upgrades/v5.0.0/cleanDatabaseRecord.js.map +1 -0
- package/upgrades/v5.0.0/createOldVersionIndiceName.js.map +1 -0
- package/upgrades/v5.0.0/entryValueFixer.js.map +1 -0
- package/upgrades/v5.0.0/fieldFinder.js.map +1 -0
- package/upgrades/v5.0.0/helpers.js.map +1 -0
- package/upgrades/v5.0.0/index.js.map +1 -0
- package/upgrades/v5.8.0/index.js.map +1 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { CmsEntry, CmsModel } from "@webiny/api-headless-cms/types";
|
|
5
5
|
export declare const cleanDatabaseRecord: <T extends CmsModel | CmsEntry>(record: T & {
|
|
6
|
-
PK?: string;
|
|
7
|
-
SK?: string;
|
|
8
|
-
TYPE?: string;
|
|
6
|
+
PK?: string | undefined;
|
|
7
|
+
SK?: string | undefined;
|
|
8
|
+
TYPE?: string | undefined;
|
|
9
9
|
}) => T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["cleanDatabaseRecord.ts"],"names":["cleanDatabaseRecord","record"],"mappings":";;;;;;;;;AAKA;;AALA;AACA;AACA;AACA;AAIO,MAAMA,mBAAmB,GAC5BC,MAD+B,IAE3B;AACJ,SAAO,mBAAWA,MAAX,EAAmB,CAAC,IAAD,EAAO,IAAP,EAAa,MAAb,CAAnB,CAAP;AACH,CAJM","sourcesContent":["/**\n * File not used anymore.\n */\n// @ts-nocheck\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport lodashOmit from \"lodash/omit\";\n\nexport const cleanDatabaseRecord = <T extends CmsModel | CmsEntry>(\n record: T & { PK?: string; SK?: string; TYPE?: string }\n): T => {\n return lodashOmit(record, [\"PK\", \"SK\", \"TYPE\"]) as T;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["createOldVersionIndiceName.ts"],"names":["createOldVersionIndiceName","context","tenancy","getCurrentTenant","id"],"mappings":";;;;;;;AAEO,MAAMA,0BAA0B,GAAIC,OAAD,IAAiC;AACvE,SAAQ,GAAEA,OAAO,CAACC,OAAR,CAAgBC,gBAAhB,GAAmCC,EAAG,eAAhD;AACH,CAFM","sourcesContent":["import { CmsContext } from \"@webiny/api-headless-cms/types\";\n\nexport const createOldVersionIndiceName = (context: CmsContext): string => {\n return `${context.tenancy.getCurrentTenant().id}-headless-cms`;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["entryValueFixer.ts"],"names":["convertTimeToNumber","time","hours","minutes","seconds","split","map","Number","fixRawValues","target","finder","entry","fieldId","rawValues","field","findById","modelId","type","existingValue","values","rawValue","undefined","fixTime","isNaN","parseInt","err","console","log","fixDateTime","dateTime","settings","Date","toISOString","fixNumber","_","value","parseFloat","fieldFixMethods","datetime","number","fixFieldValues","fixMethod","entryValueFixer"],"mappings":"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","sourcesContent":["/**\n * File not used anymore.\n */\n// @ts-nocheck\nimport { ModelFieldFinder } from \"./fieldFinder\";\nimport { cleanDatabaseRecord } from \"./cleanDatabaseRecord\";\nimport { CmsIndexEntry } from \"../../types\";\nimport { CmsEntry, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\n\nconst convertTimeToNumber = (time?: string): number | null => {\n if (!time) {\n return null;\n }\n const [hours, minutes, seconds = 0] = time.split(\":\").map(Number);\n return hours * 60 * 60 + minutes * 60 + seconds;\n};\n\nconst fixRawValues = (target: CmsIndexEntry, finder: ModelFieldFinder): CmsIndexEntry => {\n const entry = {\n ...target\n };\n for (const fieldId in entry.rawValues) {\n // if field is ref field then continue, otherwise break\n const field = finder.findById(target.modelId, fieldId);\n if (field.type !== \"ref\") {\n continue;\n }\n const existingValue = entry.values[fieldId];\n const rawValue = entry.rawValues[fieldId];\n // always remove from rawValue\n delete entry.rawValues[fieldId];\n // if there is something in values - do not switch it\n if (typeof existingValue !== \"undefined\" || rawValue === undefined || rawValue === null) {\n continue;\n }\n entry.values[fieldId] = rawValue;\n }\n return entry;\n};\n\nconst fixTime = (field, time: any): number | null => {\n if (isNaN(time as number) === false) {\n return parseInt(time);\n }\n // lets not reinvent the wheel\n try {\n return convertTimeToNumber(time);\n } catch (err) {\n console.log(`fixTime on field \"${field.fieldId}\" failed`, err);\n return null;\n }\n};\n\nconst fixDateTime = (field: CmsModelField, dateTime: any): any => {\n switch (field.settings.type) {\n case \"time\":\n return fixTime(field, dateTime);\n case \"date\":\n return new Date(dateTime).toISOString();\n case \"dateTimeWithoutTimezone\":\n return new Date(dateTime).toISOString();\n default:\n return dateTime;\n }\n};\n\nconst fixNumber = (_: CmsModelField, value: any) => {\n if (value === undefined || value === null) {\n return null;\n }\n return parseFloat(value);\n};\n\nconst fieldFixMethods = {\n datetime: fixDateTime,\n number: fixNumber\n};\n\nconst fixFieldValues = (target: CmsIndexEntry, finder: ModelFieldFinder): CmsIndexEntry => {\n const entry = {\n ...target\n };\n\n for (const fieldId in target.values) {\n const field = finder.findById(target.modelId, fieldId);\n if (!field) {\n continue;\n }\n\n const fixMethod = fieldFixMethods[field.type];\n if (!fixMethod) {\n continue;\n } else if (target.values[fieldId] === null || target.values[fieldId] === undefined) {\n continue;\n }\n target.values[fieldId] = fixMethod(field, target.values[fieldId]);\n }\n\n return entry;\n};\n\nexport const entryValueFixer = (\n _: CmsModel,\n finder: ModelFieldFinder,\n target: CmsIndexEntry\n): CmsEntry => {\n return cleanDatabaseRecord(fixFieldValues(fixRawValues(target, finder), finder));\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fieldFinder.ts"],"names":["createFieldFinder","models","modelsList","model","values","id","type","field","fields","fieldId","push","modelId","findById","findByType"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAmBO,MAAMA,iBAAiB,GAAIC,MAAD,IAA0C;AACvE,QAAMC,UAAwB,GAAG,EAAjC;;AACA,OAAK,MAAMC,KAAX,IAAoBF,MAApB,EAA4B;AACxB,UAAMG,MAAM,GAAG;AACXC,MAAAA,EAAE,EAAE,EADO;AAEXC,MAAAA,IAAI,EAAE;AAFK,KAAf;;AAIA,SAAK,MAAMC,KAAX,IAAoBJ,KAAK,CAACK,MAA1B,EAAkC;AAC9BJ,MAAAA,MAAM,CAACC,EAAP,CAAUE,KAAK,CAACE,OAAhB,IAA2BF,KAA3B;;AACA,UAAI,CAACH,MAAM,CAACE,IAAP,CAAYC,KAAK,CAACD,IAAlB,CAAL,EAA8B;AAC1BF,QAAAA,MAAM,CAACE,IAAP,CAAYC,KAAK,CAACD,IAAlB,IAA0B,EAA1B;AACH;;AACDF,MAAAA,MAAM,CAACE,IAAP,CAAYC,KAAK,CAACD,IAAlB,EAAwBI,IAAxB,CAA6BH,KAA7B;AACH;;AAEDL,IAAAA,UAAU,CAACC,KAAK,CAACQ,OAAP,CAAV,GAA4BP,MAA5B;AACH;;AAED,SAAO;AACHQ,IAAAA,QAAQ,EAAE,CAACT,KAAD,EAAQM,OAAR,KAAoB;AAC1B,YAAME,OAAO,GAAG,OAAOR,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoCA,KAAK,CAACQ,OAA1D;AAEA,aAAOT,UAAU,CAACS,OAAD,CAAV,CAAoBN,EAApB,CAAuBI,OAAvB,CAAP;AACH,KALE;AAMHI,IAAAA,UAAU,EAAE,CAACV,KAAD,EAAQG,IAAR,KAAiB;AACzB,YAAMK,OAAO,GAAG,OAAOR,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoCA,KAAK,CAACQ,OAA1D;AAEA,aAAOT,UAAU,CAACS,OAAD,CAAV,CAAoBL,IAApB,CAAyBA,IAAzB,CAAP;AACH;AAVE,GAAP;AAYH,CA9BM","sourcesContent":["/**\n * File not used anymore.\n */\n// @ts-nocheck\nimport { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\n\ninterface MappedModels {\n [modelId: string]: {\n id: {\n [fieldId: string]: CmsModelField;\n };\n type: {\n [fieldType: string]: CmsModelField[];\n };\n };\n}\n\nexport interface ModelFieldFinder {\n findById: (model: CmsModel | string, fieldId: string) => CmsModelField;\n findByType: (model: CmsModel | string, type: string) => CmsModelField[];\n}\n\nexport const createFieldFinder = (models: CmsModel[]): ModelFieldFinder => {\n const modelsList: MappedModels = {};\n for (const model of models) {\n const values = {\n id: {},\n type: {}\n };\n for (const field of model.fields) {\n values.id[field.fieldId] = field;\n if (!values.type[field.type]) {\n values.type[field.type] = [];\n }\n values.type[field.type].push(field);\n }\n\n modelsList[model.modelId] = values;\n }\n\n return {\n findById: (model, fieldId) => {\n const modelId = typeof model === \"string\" ? model : model.modelId;\n\n return modelsList[modelId].id[fieldId];\n },\n findByType: (model, type) => {\n const modelId = typeof model === \"string\" ? model : model.modelId;\n\n return modelsList[modelId].type[type];\n }\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["helpers.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./cleanDatabaseRecord\";\nexport * from \"./entryValueFixer\";\nexport * from \"./fieldFinder\";\nexport * from \"./createOldVersionIndiceName\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["plugin","name","type","app","version","apply","context","db","fileManager","elasticsearch","WebinyError","esIndex","body","exists","indices","index","putTemplate","index_patterns","settings","analysis","analyzer","lowercase_analyzer","filter","tokenizer","mappings","properties","property","fields","keyword","ignore_above","rawValues","enabled","err","console","log","hasMoreItems","after","undefined","limit","esItems","response","search","sort","createdOn","order","unmapped_type","size","hits","length","item","_id","includes","esJSON","JSON","stringify","file","storage","storagePlugin","upload","buffer","Buffer","from","key","locales","i18n","getLocales","esOperations","locale","models","read","configurations","query","PK","code","SK","$gt","Promise","resolve","setTimeout","modelsById","reduce","acc","model","modelId","ddbItems","hit","_source","map","entry","modelFieldFinder","indexName","toLowerCase","id","split","__type","esData","webinyVersion","push","_index","data","savedOn","Date","toISOString","ignore","Boolean","items","batch","create","esDb","execute","bulkInsert","bulk"],"mappings":"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","sourcesContent":["/**\n * File not used anymore.\n */\n// @ts-nocheck\nimport WebinyError from \"@webiny/error\";\nimport { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport {\n entryValueFixer,\n cleanDatabaseRecord,\n createFieldFinder,\n createOldVersionIndiceName\n} from \"./helpers\";\n\nimport { paginateBatch } from \"../utils\";\nimport { CmsIndexEntry } from \"../../types\";\nimport { CmsModel, CmsContext } from \"@webiny/api-headless-cms/types\";\nimport configurations from \"../../configurations\";\nimport { Client } from \"@elastic/elasticsearch\";\n\ninterface Hit {\n _id: string;\n _index: string;\n _source: CmsIndexEntry;\n}\n\nconst plugin = (): UpgradePlugin<CmsContext> => ({\n name: \"api-upgrade-cms-5.0.0\",\n type: \"api-upgrade\",\n app: \"headless-cms\",\n version: \"5.0.0\",\n async apply(context) {\n const { db, fileManager } = context;\n const elasticsearch: Client = (context as any).elasticsearch;\n if (!elasticsearch) {\n throw new WebinyError(\"Missing Elasticsearch client on the context.\");\n }\n\n // Check if we still have the old elasticsearch index\n const esIndex = createOldVersionIndiceName(context);\n const { body: exists } = await elasticsearch.indices.exists({\n index: esIndex\n });\n\n if (!exists) {\n return;\n }\n\n try {\n await elasticsearch.indices.putTemplate({\n name: \"headless-cms-entries-index\",\n body: {\n index_patterns: [\"*headless-cms*\"],\n settings: {\n analysis: {\n analyzer: {\n lowercase_analyzer: {\n type: \"custom\",\n filter: [\"lowercase\", \"trim\"],\n tokenizer: \"keyword\"\n }\n }\n }\n },\n mappings: {\n properties: {\n property: {\n type: \"text\",\n fields: {\n keyword: {\n type: \"keyword\",\n ignore_above: 256\n }\n },\n analyzer: \"lowercase_analyzer\"\n },\n rawValues: {\n type: \"object\",\n enabled: false\n }\n }\n }\n }\n });\n } catch (err) {\n console.log(err);\n throw new WebinyError(\"Put index template failed!\");\n }\n\n // Load existing ES items\n let hasMoreItems = true;\n let after: string | undefined = undefined;\n const limit = 1000;\n let esItems = [];\n\n // go through old index and load data in bulks of 1000\n while (hasMoreItems) {\n const response = await elasticsearch.search({\n index: esIndex,\n body: {\n sort: {\n createdOn: {\n order: \"asc\",\n // eslint-disable-next-line\n unmapped_type: \"date\"\n }\n },\n size: limit + 1,\n after\n }\n });\n\n const { hits } = response.body.hits;\n\n hasMoreItems = hits.length > limit;\n after = hasMoreItems ? hits[limit - 1].sort : undefined;\n esItems = [...esItems, ...hits.filter(item => !item._id.includes(\"T#root#\"))];\n }\n\n console.log(`Fetched ${esItems.length} items from Elasticsearch`);\n if (esItems.length === 0) {\n return;\n }\n\n // Store a backup of old items\n const esJSON = JSON.stringify(esItems);\n\n const { file } = await fileManager.storage.storagePlugin.upload({\n name: \"upgrade-headless-cms-es-5.0.0.json\",\n type: \"application/json\",\n size: esJSON.length,\n buffer: Buffer.from(esJSON)\n });\n\n console.log(`Stored backup of Elasticsearch items to ${file.key}`);\n\n // Load models for each locale and distribute ES items to new per-model indexes\n const locales = context.i18n.getLocales();\n\n const esOperations = [];\n\n for (const locale of locales) {\n const [models] = await db.read<CmsModel>({\n // @ts-ignore\n ...configurations.db(),\n query: { PK: `T#root#L#${locale.code}#CMS#CM`, SK: { $gt: \" \" } }\n });\n\n // Sleep for 2 seconds\n await new Promise(resolve => setTimeout(resolve, 2000));\n\n const modelsById: Record<string, CmsModel> = models.reduce((acc, model) => {\n acc[model.modelId] = model;\n return acc;\n }, {});\n\n /**\n * Build a list of items for ES DDB table\n */\n const ddbItems = esItems\n .filter((hit: Hit) => {\n return hit._source.locale === locale.code;\n })\n .map((hit: Hit) => {\n const entry = hit._source;\n const model = modelsById[entry.modelId];\n if (!model) {\n return null;\n }\n\n const modelFieldFinder = createFieldFinder(models);\n\n const indexName =\n `root-headless-cms-${locale.code}-${model.modelId}`.toLowerCase();\n const PK = `T#root#L#${locale.code}#CMS#CME#${entry.id.split(\"#\")[0]}`;\n const SK = entry.__type === \"cms.entry.l\" ? \"L\" : \"P\";\n const esData = {\n ...entryValueFixer(model, modelFieldFinder, cleanDatabaseRecord(entry)),\n webinyVersion: \"5.0.0\"\n };\n\n esOperations.push({ index: { _index: indexName, _id: `${PK}:${SK}` } }, esData);\n\n return {\n PK,\n SK,\n index: indexName,\n data: esData,\n savedOn: new Date().toISOString(),\n version: \"5.0.0\",\n ignore: true\n };\n })\n .filter(Boolean);\n\n console.log(`[${locale.code}] Prepared ${ddbItems.length} ES DDB items.`);\n\n await paginateBatch(ddbItems, 25, async items => {\n const batch = db.batch();\n await batch\n .create(\n ...items.map(item => {\n return {\n // @ts-ignore\n ...configurations.esDb(),\n data: item\n };\n })\n )\n .execute();\n });\n\n console.log(`[${locale.code}] Inserted ES DDB items.`);\n\n // update all models to latest version\n await paginateBatch(models, 25, async items => {\n await db\n .batch()\n .create(\n ...items.map(model => {\n return {\n // @ts-ignore\n ...configurations.db(),\n data: {\n ...model,\n locale: locale.code,\n webinyVersion: \"5.0.0\"\n }\n };\n })\n )\n .execute();\n });\n\n console.log(\n `[${locale.code}] Updated DDB model records with version number and locale code.`\n );\n }\n\n // ES BULK INSERT\n const bulkInsert = await elasticsearch.bulk({\n body: esOperations\n });\n\n console.log(\"ES bulk index\", bulkInsert);\n }\n});\n\nexport default plugin;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["sleep","ms","Promise","resolve","setTimeout","extractEntryId","id","includes","WebinyError","entryId","split","shift","createPartitionKey","data","JSON","stringify","tenant","locale","executeQuery","query","items","previousResult","Array","isArray","Items","length","push","result","next","fetchEntries","args","records","entity","queries","Object","values","map","record","partitionKey","results","all","reduce","concat","ex","table","name","type","app","version","apply","context","i18n","elasticsearch","console","log","definitions","defineTable","elasticTable","defineElasticsearchTable","modelEntity","defineModel","entryEntity","defineEntry","entryElasticsearchEntity","defineElasticsearchEntry","entryRecords","esIndices","locales","getLocales","recordsInABatch","models","code","model","index","esIndex","configurations","es","cms","getLocale","localeCode","limit","esData","hasMoreItems","after","response","search","body","bool","must","term","__type","TYPE_ENTRY_LATEST","sort","createdOn","order","unmapped_type","size","hits","hit","source","_source","tenancy","getCurrentTenant","undefined","keys","regularEntries","updates","entry","putBatch","chunks","key","hasOwnProperty","chunk","batchWrite","elasticEntries","elasticUpdates","breakMs","elasticUpdatesChunks","elasticUpdateChunk","message"],"mappings":"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","sourcesContent":["/**\n * File not used anymore.\n */\n// @ts-nocheck\nimport { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport { CmsEntry, CmsModel, CmsContext } from \"@webiny/api-headless-cms/types\";\nimport configurations from \"../../configurations\";\nimport { TYPE_ENTRY_LATEST } from \"../../operations/entry/CmsContentEntryDynamoElastic\";\nimport WebinyError from \"@webiny/error\";\nimport lodashChunk from \"lodash/chunk\";\nimport definitions from \"../../definitions\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\n\ninterface EntryRecordData {\n /**\n * A generated mdbid with the version number.\n */\n id: string;\n /**\n * A generated mdbid without the version number.\n */\n entryId: string;\n /**\n * Tenant id.\n */\n tenant: string;\n /**\n * Locale code.\n */\n locale: string;\n}\n\ninterface ElasticCmsContentEntry {\n index: string;\n PK: string;\n SK: string;\n data: CmsEntry;\n}\n\nconst sleep = async (ms = 2000): Promise<void> => {\n await new Promise(resolve => setTimeout(resolve, ms));\n};\n/**\n * Entry ID is the first part of the ID, before the #.\n */\nconst extractEntryId = (id: string): string => {\n if (id.includes(\"#\") === false) {\n throw new WebinyError(\n \"Missing # in the given id value. Possibly not an ID.\",\n \"MALFORMED_ID_ERROR\",\n {\n id\n }\n );\n }\n const entryId = id.split(\"#\").shift();\n if (!entryId) {\n throw new WebinyError(\"Malformed entry ID.\", \"MALFORMED_ID_ERROR\", {\n id\n });\n }\n return entryId;\n};\n\nconst createPartitionKey = (data: EntryRecordData) => {\n if (!data.id) {\n throw new WebinyError(\n `Missing ID in the EntryRecordData: ${JSON.stringify(data)}`,\n \"RECORD_DATA_ID_ERROR\",\n {\n data\n }\n );\n }\n const entryId = extractEntryId(data.id);\n if (!data.tenant) {\n throw new WebinyError(\"Missing tenant on entry record data.\", \"TENANT_ERROR\", {\n data\n });\n } else if (!data.locale) {\n throw new WebinyError(\"Missing locale on entry record data.\", \"LOCALE_ERROR\", {\n data\n });\n }\n return `T#${data.tenant}#L#${data.locale}#CMS#CME#${entryId}`;\n};\n/**\n * DynamoDB Toolbox Entity query executor.\n * This helps with paginating the result and loading all of the data that can be fetched by the query.\n */\nconst executeQuery = async <T>(query: Promise<any>): Promise<T[]> => {\n const items: T[] = [];\n /**\n * First result is actually the real query result.\n */\n let previousResult = await query;\n if (\n !previousResult ||\n Array.isArray(previousResult.Items) === false ||\n previousResult.Items.length === 0\n ) {\n return items;\n }\n items.push(...previousResult.Items);\n let result;\n /**\n * If previousResult.next method returns false it means there is nothing more to load.\n * Otherwise a result object is returned and we loop it.\n * This works only if autoParse is not false (it is true by default).\n */\n while (typeof previousResult.next === \"function\" && (result = previousResult.next())) {\n if (!result || Array.isArray(result.Items) === false || result.Items.length === 0) {\n return items;\n }\n items.push(...result.Items);\n previousResult = result;\n }\n return items;\n};\n\ninterface FetchEntriesArgs {\n records: Record<string, EntryRecordData>;\n entity: Entity<any>;\n}\n\nconst fetchEntries = async <T>(args: FetchEntriesArgs): Promise<T[]> => {\n const { records, entity } = args;\n const queries = Object.values(records).map(record => {\n const partitionKey = createPartitionKey(record);\n return executeQuery<T>(entity.query(partitionKey));\n });\n try {\n const results = await Promise.all(queries);\n\n return results.reduce((items, result) => {\n return items.concat(result);\n }, []);\n } catch (ex) {\n throw new WebinyError(\n `Fetching the entries from \"${entity.table.name}\" table the error.`,\n \"FETCH_ENTRIES_ERROR\",\n {\n table: entity.table.name,\n entity: entity.name\n }\n );\n }\n};\n\nexport default (): UpgradePlugin<CmsContext> => ({\n type: \"api-upgrade\",\n name: \"api-upgrade-5.8.0\",\n app: \"headless-cms\",\n version: \"5.8.0\",\n async apply(context: CmsContext): Promise<void> {\n const { i18n } = context;\n const elasticsearch: Client = (context as any).elasticsearch;\n if (!elasticsearch) {\n throw new WebinyError(\"Missing Elasticsearch client on the context.\");\n }\n console.log(\"Started with the update of CMS entries.\");\n\n /**\n * Define tables and entities via helper methods because tables and entities are created in multiple places in the code.\n */\n const table = definitions.defineTable(context);\n const elasticTable = definitions.defineElasticsearchTable(context);\n const modelEntity = definitions.defineModel({ context, table });\n const entryEntity = definitions.defineEntry({ context, table });\n const entryElasticsearchEntity = definitions.defineElasticsearchEntry({\n context,\n table: elasticTable\n });\n\n const entryRecords: Record<string, EntryRecordData> = {};\n const esIndices: { esIndex: string; localeCode: string }[] = [];\n const locales = i18n.getLocales();\n /**\n * max dynamodb limit\n */\n const recordsInABatch = 25;\n\n /**\n * We need to find all the entries in each of the possible elasticsearch indexes.\n * For that we need a list of indexes + localeCode.\n * To get the index name we need models from in each locale.\n */\n for (const locale of locales) {\n /**\n * Need all the models to build the elasticsearch indexes\n */\n const models = await executeQuery<CmsModel>(\n // TODO determine if required to loop through the tenants\n modelEntity.query(`T#root#L#${locale.code}#CMS#CM`)\n );\n\n for (const model of models) {\n const { index: esIndex } = configurations.es(\n {\n ...context,\n cms: {\n ...context.cms,\n getLocale: () => {\n return locale;\n }\n }\n },\n // @ts-ignore\n model\n );\n esIndices.push({\n esIndex,\n localeCode: locale.code\n });\n }\n }\n const limit = 100;\n /**\n * Get all the latest entries from all the indexes, we only need the ID of the entry from the Elasticsearch.\n * Other data we need is the tenant ID and locale code.\n */\n for (const esData of esIndices) {\n const { esIndex, localeCode } = esData;\n let hasMoreItems = true;\n let after: string;\n while (hasMoreItems) {\n const response = await elasticsearch.search({\n index: esIndex,\n body: {\n query: {\n bool: {\n must: [\n {\n term: {\n __type: TYPE_ENTRY_LATEST\n }\n }\n ]\n }\n },\n sort: {\n createdOn: {\n order: \"asc\",\n // eslint-disable-next-line\n unmapped_type: \"date\"\n }\n },\n size: limit + 1,\n after\n }\n });\n\n const { hits } = response.body.hits;\n\n for (const hit of hits) {\n /**\n * _source should be an property on the hit, but we check it just in case something wrong happens.\n * There are no Elasticsearch typings for this.\n */\n const source = hit._source || {};\n if (!source.id) {\n throw new WebinyError(\n `Missing ID in source: ${JSON.stringify(source)}`,\n \"SOURCE_ID_ERROR\",\n {\n source\n }\n );\n }\n const entryId = extractEntryId(source.id);\n entryRecords[entryId] = {\n id: source.id,\n entryId,\n tenant: context.tenancy.getCurrentTenant().id,\n locale: localeCode\n };\n }\n\n hasMoreItems = hits.length > limit;\n after = hasMoreItems ? hits[limit - 1].sort : undefined;\n }\n }\n console.log(\n `[ELASTICSEARCH] Retrieved ${\n Object.keys(entryRecords).length\n } entry IDs to query directly from the DynamoDB.`\n );\n /**\n * Now we go into the DynamoDB regular table and find all the entries with the given IDs.\n * This is done via the partition key as it is a combination of tenant, locale and generated entry id.\n * We need to have a query for each of the entries because there are possible versions, published and latest records.\n * We can use a scan but at that point all the records in the table would be read,\n * which is possibly expensive if there are a lot of records from the other applications (file manager, form builder, ...)\n */\n const regularEntries = await fetchEntries<CmsEntry>({\n records: entryRecords,\n entity: entryEntity\n });\n\n /**\n * Then we create updates to the regular DynamoDB records.\n */\n const updates = [];\n for (const entry of regularEntries) {\n if (!entry.id) {\n throw new WebinyError(\n `Missing ID in regular entry: ${JSON.stringify(entry)}`,\n \"ENTRY_ID_ERROR\",\n {\n entry\n }\n );\n }\n const entryId = extractEntryId(entry.id);\n if (!entryRecords[entryId]) {\n continue;\n }\n const { tenant } = entryRecords[entryId];\n /**\n * Remove the leftovers from the beta 5 to v5.0.0 upgrade\n */\n delete entry[\"ignore\"];\n updates.push(\n entryEntity.putBatch({\n ...entry,\n entryId,\n tenant\n })\n );\n }\n try {\n const chunks = lodashChunk(updates, recordsInABatch);\n for (const key in chunks) {\n if (!chunks.hasOwnProperty(key)) {\n continue;\n }\n const chunk = chunks[key];\n await table.batchWrite(chunk);\n }\n } catch (ex) {\n throw new WebinyError(\n \"Error while writing a batch of records to regular table.\",\n \"REGULAR_TABLE_WRITE_ERROR\",\n {\n length: updates.length,\n ex\n }\n );\n }\n\n console.log(`[DYNAMODB] Table updated records: ${updates.length}`);\n /**\n * Time to go for the Elasticsearch data.\n */\n const elasticEntries = await fetchEntries<ElasticCmsContentEntry>({\n records: entryRecords,\n entity: entryElasticsearchEntity\n });\n /**\n * Then we create the updates to the Elasticsearch records.\n */\n const elasticUpdates = [];\n for (const entry of elasticEntries) {\n const data = entry.data;\n if (!data) {\n throw new WebinyError(\"Missing data in elastic entry.\", \"DATA_ERROR\", {\n entry\n });\n } else if (!data.id) {\n throw new WebinyError(\n `Missing ID in elastic entry data: ${JSON.stringify(entry)}`,\n \"DATA_ID_ERROR\",\n {\n entry\n }\n );\n }\n const entryId = extractEntryId(data.id);\n if (!entryRecords[entryId]) {\n continue;\n }\n const { tenant } = entryRecords[entryId];\n /**\n * Remove the leftovers from the beta 5 to v5.0.0 upgrade\n */\n delete entry[\"ignore\"];\n delete entry[\"savedOn\"];\n delete entry[\"version\"];\n elasticUpdates.push(\n entryElasticsearchEntity.putBatch({\n ...entry,\n data: {\n ...data,\n entryId,\n tenant\n }\n })\n );\n }\n\n const breakMs = 200;\n /**\n * Updating the Elasticsearch table is a bit tricky because it can break if overwhelmed.\n * We will take breakMs ms break between each recordsInABatch records\n */\n const elasticUpdatesChunks = lodashChunk(elasticUpdates, recordsInABatch);\n console.log(\n `[ELASTICSEARCH] Total chunks to be written with ${recordsInABatch} records in a batch: ${elasticUpdatesChunks.length}`\n );\n for (const elasticUpdateChunk of elasticUpdatesChunks) {\n try {\n await elasticTable.batchWrite(elasticUpdateChunk);\n } catch (ex) {\n throw new WebinyError(\n \"Error writing to Elasticsearch stream table.\",\n \"STREAM_TABLE_WRITE_ERROR\",\n {\n ex,\n message: ex.message\n }\n );\n }\n await sleep(breakMs);\n }\n console.log(`[ELASTICSEARCH] Streaming table updated records: ${elasticUpdates.length}`);\n }\n});\n"]}
|