UNPKG

burdy

Version:

Open Source Headless Platform

114 lines (113 loc) 4.37 kB
"use strict"; 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.exportTags = exports.importTags = exports.importTag = exports.getParent = void 0; const async_1 = __importDefault(require("async")); const logger_1 = __importDefault(require("../../shared/features/logger")); const tag_model_1 = __importDefault(require("../models/tag.model")); const getParent = (manager, components, parent) => __awaiter(void 0, void 0, void 0, function* () { if (components.length > 0) { let newParent; const slug = components.shift(); const slugPath = parent ? `${parent.slugPath}/${slug}` : slug; try { newParent = yield manager.save(tag_model_1.default, { parent, name: slug, slug, slugPath, }); } catch (err) { newParent = yield manager.findOne(tag_model_1.default, { slugPath, }); } parent = yield (0, exports.getParent)(manager, components, newParent); } return parent; }); exports.getParent = getParent; const importTag = ({ manager, tag, user }) => __awaiter(void 0, void 0, void 0, function* () { let saved; const searchObj = { slugPath: tag.slugPath, }; logger_1.default.info(`Importing ${tag.slugPath}`); saved = yield manager.findOne(tag_model_1.default, { relations: ['meta', 'author', 'author.meta', 'parent'], where: searchObj, }); if (saved) { logger_1.default.info(`Skipping ${tag.slugPath}, exists.`); return saved; } let parent; const slugComponents = tag.slugPath .split('/') .filter((cmp) => (cmp === null || cmp === void 0 ? void 0 : cmp.length) > 0); slugComponents.pop(); if (slugComponents.length > 0) { parent = yield (0, exports.getParent)(manager, slugComponents); } const tagObj = { name: tag.name, slug: tag.slug, slugPath: tag.slugPath, parent, author: user, }; saved = yield manager.save(tag_model_1.default, tagObj); logger_1.default.info(`Created new tag ${tag.slugPath}.`); return saved; }); exports.importTag = importTag; const importTags = ({ entityManager, data, user, options, }) => __awaiter(void 0, void 0, void 0, function* () { const sorted = (data || []).sort((a, b) => { if (a.slugPath < b.slugPath) { return -1; } if (a.slugPath > b.slugPath) { return 1; } return 0; }); if ((sorted === null || sorted === void 0 ? void 0 : sorted.length) > 0) { logger_1.default.info('Importing tags.'); } yield async_1.default.eachLimit(sorted, 1, (item, next) => __awaiter(void 0, void 0, void 0, function* () { try { yield (0, exports.importTag)({ manager: entityManager, user, tag: item, options, }); next(); } catch (e) { next(e); } })); if ((sorted === null || sorted === void 0 ? void 0 : sorted.length) > 0) { logger_1.default.info('Importing tags successful.'); } }); exports.importTags = importTags; const exportTags = ({ entityManager, }) => __awaiter(void 0, void 0, void 0, function* () { const tagRepository = entityManager.getRepository(tag_model_1.default); const tags = yield tagRepository.find(); return tags; }); exports.exportTags = exportTags;