burdy
Version:
Open Source Headless Platform
78 lines (77 loc) • 4.03 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.exportContentTypes = exports.importContentTypes = void 0;
const content_type_model_1 = __importDefault(require("../models/content-type.model"));
const typeorm_1 = require("typeorm");
const logger_1 = __importDefault(require("../../shared/features/logger"));
const importContentTypes = ({ entityManager, data: list, user, options, }) => __awaiter(void 0, void 0, void 0, function* () {
const saved = [];
const contentTypes = yield entityManager.find(content_type_model_1.default, {
where: {
name: (0, typeorm_1.In)(list === null || list === void 0 ? void 0 : list.map((contentType) => contentType === null || contentType === void 0 ? void 0 : contentType.name)),
},
});
if ((contentTypes === null || contentTypes === void 0 ? void 0 : contentTypes.length) > 0) {
logger_1.default.info('Importing content types.');
}
yield Promise.all(list.map((item) => __awaiter(void 0, void 0, void 0, function* () {
const contentType = contentTypes.find((ct) => ct.name === item.name);
if (contentType && !(options === null || options === void 0 ? void 0 : options.force)) {
logger_1.default.info(`Skipping ${contentType === null || contentType === void 0 ? void 0 : contentType.name}, exists.`);
return;
}
if (contentType) {
contentType.author = user;
contentType.fields = JSON.stringify(item.fields || []);
const obj = yield entityManager.save(content_type_model_1.default, contentType);
logger_1.default.info(`Updated content type ${contentType === null || contentType === void 0 ? void 0 : contentType.name}.`);
saved.push(obj);
return;
}
const obj = yield entityManager.save(content_type_model_1.default, {
name: item.name,
type: item.type,
author: user,
fields: JSON.stringify(item.fields || []),
});
logger_1.default.info(`Created new content type ${item === null || item === void 0 ? void 0 : item.name}.`);
saved.push(obj);
})));
if ((saved === null || saved === void 0 ? void 0 : saved.length) > 0) {
logger_1.default.info('Importing content types success.');
}
return saved;
});
exports.importContentTypes = importContentTypes;
const exportContentTypes = ({ entityManager, }) => __awaiter(void 0, void 0, void 0, function* () {
const contentTypeRepository = entityManager.getRepository(content_type_model_1.default);
const contentTypes = yield contentTypeRepository.find();
const mappedContentTypes = contentTypes.map((contentType) => {
let fields = [];
try {
fields = JSON.parse(contentType.fields);
}
catch (_a) {
//
}
return {
name: contentType === null || contentType === void 0 ? void 0 : contentType.name,
type: contentType === null || contentType === void 0 ? void 0 : contentType.type,
fields,
};
});
return mappedContentTypes;
});
exports.exportContentTypes = exportContentTypes;