@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
66 lines (65 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentationConverter = void 0;
const types_1 = require("../../../types");
const USER_ID = process.env.OI_DOCUMENTATION_USER_ID;
const TENANT_ID = process.env.OI_DOCUMENTATION_TENANT_ID;
class DocumentationConverter {
constructor(importResults) {
this.results = importResults;
}
async convert(user, tenant) {
// Implement your conversion logic here
if (!this.results.structure)
return;
this.convertFolderToCategory(this.results.structure.root, undefined, user, tenant);
}
async convertFolderToCategory(folder, parentCategory, user, tenant) {
const existingCategory = await new Parse.Query(types_1.Documentation_Category)
.equalTo("gitPath", folder.path)
.equalTo("isDefault", true)
.equalTo("user", user)
.equalTo("tenant", tenant)
.first({ useMasterKey: true });
const folderCategory = existingCategory || new types_1.Documentation_Category();
folderCategory.set("name", folder.config.title || folder.name);
folderCategory.set("icon", folder.config.icon);
folderCategory.set("order", folder.config.order || 999);
folderCategory.set("parent", parentCategory);
folderCategory.set("isDefault", true);
folderCategory.set("gitPath", folder.path);
if (user)
folderCategory.set("user", user);
if (tenant || user)
folderCategory.set("tenant", tenant ?? user?.get("tenant"));
const savedCategory = await folderCategory.save(null, {
useMasterKey: true,
});
for (const subfolder of folder.subfolders.values())
await this.convertFolderToCategory(subfolder, savedCategory, user, tenant);
for (const file of folder.files)
await this.convertFileToDocumentation(file, savedCategory, user, tenant);
}
async convertFileToDocumentation(file, category, user, tenant) {
const existingDoc = await new Parse.Query(types_1.Documentation_Document)
.equalTo("gitPath", file.path)
.equalTo("isDefault", true)
.first({ useMasterKey: true });
const doc = existingDoc || new types_1.Documentation_Document();
doc.set("title", file.config?.title || file.name);
doc.set("content", file.content || "");
doc.set("icon", file.config?.icon);
doc.set("order", file.config?.order || 999);
doc.set("category", category);
doc.set("locationPattern", file.config?.locationPattern);
doc.set("locations", file.config?.locations || []);
doc.set("isDefault", true);
doc.set("gitPath", file.path);
if (user)
doc.set("user", user);
if (tenant || user)
doc.set("tenant", tenant ?? user?.get("tenant"));
await doc.save(null, { useMasterKey: true });
}
}
exports.DocumentationConverter = DocumentationConverter;