@webiny/api-headless-cms-ddb-es
Version:
DynamoDB and Elasticsearch storage operations plugin for Headless CMS API.
88 lines (86 loc) • 2.25 kB
JavaScript
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
;