UNPKG

@webiny/api-headless-cms-ddb-es

Version:

DynamoDB and Elasticsearch storage operations plugin for Headless CMS API.

88 lines (86 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const convertTimeToNumber = time => { if (!time) { return null; } const [hours, minutes, seconds = 0] = time.split(":").map(Number); return hours * 60 * 60 + minutes * 60 + seconds; }; const convertNumberToTime = value => { if (value === undefined || value === null) { return null; } // TODO remove when v5 goes out // this is a fix for pre beta.5 if (String(value).match(/^([0-9]{2}):([0-9]{2})/) !== null) { return String(value); } // const hours = Math.floor(value / 60 / 60); const minutes = Math.floor((value - hours * 60 * 60) / 60); const seconds = Math.floor(value - hours * 60 * 60 - minutes * 60); return [hours, minutes, seconds].map(v => String(v).padStart(2, "0")).join(":"); }; const convertValueFromIndex = (value, field) => { const type = field.settings?.type; if (type === "time") { return convertNumberToTime(value); } else if (!value) { return null; } else if (type === "dateTimeWithTimezone") { return value; } else if (type === "date") { const dateValue = new Date(value); return dateValue.toISOString().slice(0, 10); } return new Date(value).toISOString(); }; const convertValueToIndex = (value, field) => { if (!value) { return null; } else if (field.settings?.type === "time") { return convertTimeToNumber(value); } return value; }; var _default = () => ({ type: "cms-model-field-to-elastic-search", name: "cms-model-field-to-elastic-search-datetime", fieldType: "datetime", unmappedType: () => { return "date"; }, toIndex({ field, value }) { if (Array.isArray(value) === true) { return { value: value.map(v => { return convertValueToIndex(v, field); }) }; } const dateValue = convertValueToIndex(value, field); return { value: dateValue }; }, fromIndex({ field, value }) { if (Array.isArray(value)) { return value.map(v => { return convertValueFromIndex(v, field); }); } return convertValueFromIndex(value, field); } }); exports.default = _default; //# sourceMappingURL=dateTimeIndexing.js.map