UNPKG

@brontosaurus/db

Version:
390 lines (389 loc) 18.2 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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOrganizationsByQueryLean = exports.getOrganizationsByQuery = exports.getOrganizationIdsByNames = exports.getAllActiveOrganizationName = exports.getAllOrganizationName = exports.getAllOrganizationsByPageLean = exports.getAllOrganizationsByPage = exports.getAllActiveOrganizationsByPageLean = exports.getAllActiveOrganizationsByPage = exports.getOrganizationsByPageLean = exports.getOrganizationsByPage = exports.getActiveOrganizationsByPageLean = exports.getActiveOrganizationsByPage = exports.getSelectedOrganizationsByPageLean = exports.getSelectedOrganizationsByPage = exports.getSelectedActiveOrganizationsByPageLean = exports.getSelectedActiveOrganizationsByPage = exports.getOrganizationPagesByKeyword = exports.getActiveOrganizationPagesByKeyword = exports.getTotalActiveOrganizationPages = exports.getTotalOrganizationPages = exports.getAllOrganizationsLean = exports.getAllOrganizations = exports.getSelectedOrganizationPages = exports.getSelectedActiveOrganizationPages = exports.isOrganizationDuplicatedById = exports.isOrganizationDuplicatedByName = exports.createUnsavedOrganization = exports.getOrganizationsByOwnerLean = exports.getOrganizationsByOwner = exports.getOrganizationsByTagsLean = exports.getOrganizationsByTags = exports.getActiveOrganizationsByTagsLean = exports.getActiveOrganizationsByTags = exports.getOrganizationByNamesLean = exports.getOrganizationByNames = exports.getOrganizationByNameLean = exports.getOrganizationByName = exports.getOrganizationsByIdsLean = exports.getOrganizationsByIds = exports.getOrganizationDetailsById = exports.getOrganizationByIdLean = exports.getOrganizationById = void 0; const common_1 = require("../data/common"); const account_1 = require("../model/account"); const organization_1 = require("../model/organization"); const object_id_1 = require("../util/object-id"); const getOrganizationById = (id) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.findOne({ _id: id, }); }); exports.getOrganizationById = getOrganizationById; const getOrganizationByIdLean = (id) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.findOne({ _id: id, }).lean(); }); exports.getOrganizationByIdLean = getOrganizationByIdLean; const getOrganizationDetailsById = (id) => __awaiter(void 0, void 0, void 0, function* () { const organization = yield organization_1.OrganizationModel.findOne({ _id: id, }); if (!organization) { return null; } const owner = yield account_1.AccountModel.findOne({ _id: organization.owner, }).lean(); if (!owner) { return null; } return { name: organization.name, active: organization.active, owner: owner.username, }; }); exports.getOrganizationDetailsById = getOrganizationDetailsById; const getOrganizationsByIds = (ids) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ _id: { $in: ids, }, }); }); exports.getOrganizationsByIds = getOrganizationsByIds; const getOrganizationsByIdsLean = (ids) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ _id: { $in: ids, }, }).lean(); }); exports.getOrganizationsByIdsLean = getOrganizationsByIdsLean; const getOrganizationByName = (name) => __awaiter(void 0, void 0, void 0, function* () { const anchor = common_1.fitAnchor(name); return yield organization_1.OrganizationModel.findOne({ anchor, }); }); exports.getOrganizationByName = getOrganizationByName; const getOrganizationByNameLean = (name) => __awaiter(void 0, void 0, void 0, function* () { const anchor = common_1.fitAnchor(name); return yield organization_1.OrganizationModel.findOne({ anchor, }).lean(); }); exports.getOrganizationByNameLean = getOrganizationByNameLean; const getOrganizationByNames = (names) => __awaiter(void 0, void 0, void 0, function* () { const anchors = names.map((name) => common_1.fitAnchor(name)); return yield organization_1.OrganizationModel.find({ anchor: { $in: anchors, }, }); }); exports.getOrganizationByNames = getOrganizationByNames; const getOrganizationByNamesLean = (names) => __awaiter(void 0, void 0, void 0, function* () { const anchors = names.map((name) => common_1.fitAnchor(name)); return yield organization_1.OrganizationModel.find({ anchor: { $in: anchors, }, }).lean(); }); exports.getOrganizationByNamesLean = getOrganizationByNamesLean; const getActiveOrganizationsByTags = (tags) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ tags: { $in: object_id_1.parseObjectIDList(tags), }, active: true, }); }); exports.getActiveOrganizationsByTags = getActiveOrganizationsByTags; const getActiveOrganizationsByTagsLean = (tags) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ tags: { $in: object_id_1.parseObjectIDList(tags), }, active: true, }).lean(); }); exports.getActiveOrganizationsByTagsLean = getActiveOrganizationsByTagsLean; const getOrganizationsByTags = (tags) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ tags: { $in: object_id_1.parseObjectIDList(tags), }, }); }); exports.getOrganizationsByTags = getOrganizationsByTags; const getOrganizationsByTagsLean = (tags) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ tags: { $in: object_id_1.parseObjectIDList(tags), }, }).lean(); }); exports.getOrganizationsByTagsLean = getOrganizationsByTagsLean; const getOrganizationsByOwner = (owner) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ owner, }); }); exports.getOrganizationsByOwner = getOrganizationsByOwner; const getOrganizationsByOwnerLean = (owner) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find({ owner, }).lean(); }); exports.getOrganizationsByOwnerLean = getOrganizationsByOwnerLean; const createUnsavedOrganization = (name, owner) => { const anchor = common_1.fitAnchor(name); const config = { anchor, owner, name, }; return new organization_1.OrganizationModel(config); }; exports.createUnsavedOrganization = createUnsavedOrganization; const isOrganizationDuplicatedByName = (name) => __awaiter(void 0, void 0, void 0, function* () { const organization = yield exports.getOrganizationByName(name); return Boolean(organization); }); exports.isOrganizationDuplicatedByName = isOrganizationDuplicatedByName; const isOrganizationDuplicatedById = (id) => __awaiter(void 0, void 0, void 0, function* () { const organization = yield exports.getOrganizationById(id); return Boolean(organization); }); exports.isOrganizationDuplicatedById = isOrganizationDuplicatedById; const getSelectedActiveOrganizationPages = (limit, keyword) => __awaiter(void 0, void 0, void 0, function* () { if (keyword) { return yield exports.getActiveOrganizationPagesByKeyword(limit, keyword); } return yield exports.getTotalActiveOrganizationPages(limit); }); exports.getSelectedActiveOrganizationPages = getSelectedActiveOrganizationPages; const getSelectedOrganizationPages = (limit, keyword) => __awaiter(void 0, void 0, void 0, function* () { if (keyword) { return yield exports.getOrganizationPagesByKeyword(limit, keyword); } return yield exports.getTotalOrganizationPages(limit); }); exports.getSelectedOrganizationPages = getSelectedOrganizationPages; const getAllOrganizations = () => __awaiter(void 0, void 0, void 0, function* () { return organization_1.OrganizationModel.find({}); }); exports.getAllOrganizations = getAllOrganizations; const getAllOrganizationsLean = () => __awaiter(void 0, void 0, void 0, function* () { return organization_1.OrganizationModel.find({}).lean(); }); exports.getAllOrganizationsLean = getAllOrganizationsLean; const getTotalOrganizationPages = (limit) => __awaiter(void 0, void 0, void 0, function* () { return (yield organization_1.OrganizationModel.estimatedDocumentCount({})) / limit; }); exports.getTotalOrganizationPages = getTotalOrganizationPages; const getTotalActiveOrganizationPages = (limit) => __awaiter(void 0, void 0, void 0, function* () { return (yield organization_1.OrganizationModel.countDocuments({ active: true, })) / limit; }); exports.getTotalActiveOrganizationPages = getTotalActiveOrganizationPages; const getActiveOrganizationPagesByKeyword = (limit, keyword) => __awaiter(void 0, void 0, void 0, function* () { const anchor = common_1.fitAnchor(keyword); const regexp = new RegExp(anchor, 'i'); return (yield organization_1.OrganizationModel.countDocuments({ anchor: { $regex: regexp, }, active: true, })) / limit; }); exports.getActiveOrganizationPagesByKeyword = getActiveOrganizationPagesByKeyword; const getOrganizationPagesByKeyword = (limit, keyword) => __awaiter(void 0, void 0, void 0, function* () { const anchor = common_1.fitAnchor(keyword); const regexp = new RegExp(anchor, 'i'); return (yield organization_1.OrganizationModel.countDocuments({ anchor: { $regex: regexp, }, })) / limit; }); exports.getOrganizationPagesByKeyword = getOrganizationPagesByKeyword; const getSelectedActiveOrganizationsByPage = (limit, page, keyword) => __awaiter(void 0, void 0, void 0, function* () { if (keyword) { return yield exports.getActiveOrganizationsByPage(keyword, limit, page); } return yield exports.getAllActiveOrganizationsByPage(limit, page); }); exports.getSelectedActiveOrganizationsByPage = getSelectedActiveOrganizationsByPage; const getSelectedActiveOrganizationsByPageLean = (limit, page, keyword) => __awaiter(void 0, void 0, void 0, function* () { if (keyword) { return yield exports.getActiveOrganizationsByPageLean(keyword, limit, page); } return yield exports.getAllActiveOrganizationsByPageLean(limit, page); }); exports.getSelectedActiveOrganizationsByPageLean = getSelectedActiveOrganizationsByPageLean; const getSelectedOrganizationsByPage = (limit, page, keyword) => __awaiter(void 0, void 0, void 0, function* () { if (keyword) { return yield exports.getOrganizationsByPage(keyword, limit, page); } return yield exports.getAllOrganizationsByPage(limit, page); }); exports.getSelectedOrganizationsByPage = getSelectedOrganizationsByPage; const getSelectedOrganizationsByPageLean = (limit, page, keyword) => __awaiter(void 0, void 0, void 0, function* () { if (keyword) { return yield exports.getOrganizationsByPageLean(keyword, limit, page); } return yield exports.getAllOrganizationsByPageLean(limit, page); }); exports.getSelectedOrganizationsByPageLean = getSelectedOrganizationsByPageLean; const getActiveOrganizationsByPage = (keyword, limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const anchor = common_1.fitAnchor(keyword); const regexp = new RegExp(anchor, 'i'); const organizations = yield organization_1.OrganizationModel.find({ anchor: { $regex: regexp, }, active: true, }).skip(page * limit).limit(limit).sort({ _id: -1 }); return organizations; }); exports.getActiveOrganizationsByPage = getActiveOrganizationsByPage; const getActiveOrganizationsByPageLean = (keyword, limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const anchor = common_1.fitAnchor(keyword); const regexp = new RegExp(anchor, 'i'); const organizations = yield organization_1.OrganizationModel.find({ anchor: { $regex: regexp, }, active: true, }).skip(page * limit).limit(limit).sort({ _id: -1 }).lean(); return organizations; }); exports.getActiveOrganizationsByPageLean = getActiveOrganizationsByPageLean; const getOrganizationsByPage = (keyword, limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const anchor = common_1.fitAnchor(keyword); const regexp = new RegExp(anchor, 'i'); const organizations = yield organization_1.OrganizationModel.find({ anchor: { $regex: regexp, }, }).skip(page * limit).limit(limit).sort({ _id: -1 }); return organizations; }); exports.getOrganizationsByPage = getOrganizationsByPage; const getOrganizationsByPageLean = (keyword, limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const anchor = common_1.fitAnchor(keyword); const regexp = new RegExp(anchor, 'i'); const organizations = yield organization_1.OrganizationModel.find({ anchor: { $regex: regexp, }, }).skip(page * limit).limit(limit).sort({ _id: -1 }).lean(); return organizations; }); exports.getOrganizationsByPageLean = getOrganizationsByPageLean; const getAllActiveOrganizationsByPage = (limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const organizations = yield organization_1.OrganizationModel.find({ active: true, }).skip(page * limit).limit(limit).sort({ _id: -1 }); return organizations; }); exports.getAllActiveOrganizationsByPage = getAllActiveOrganizationsByPage; const getAllActiveOrganizationsByPageLean = (limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const organizations = yield organization_1.OrganizationModel.find({ active: true, }).skip(page * limit).limit(limit).sort({ _id: -1 }).lean(); return organizations; }); exports.getAllActiveOrganizationsByPageLean = getAllActiveOrganizationsByPageLean; const getAllOrganizationsByPage = (limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const organizations = yield organization_1.OrganizationModel.find({}) .skip(page * limit).limit(limit).sort({ _id: -1 }); return organizations; }); exports.getAllOrganizationsByPage = getAllOrganizationsByPage; const getAllOrganizationsByPageLean = (limit, page) => __awaiter(void 0, void 0, void 0, function* () { if (page < 0) { return []; } if (limit < 1) { return []; } const organizations = yield organization_1.OrganizationModel.find({}) .skip(page * limit).limit(limit).sort({ _id: -1 }).lean(); return organizations; }); exports.getAllOrganizationsByPageLean = getAllOrganizationsByPageLean; const getAllOrganizationName = () => __awaiter(void 0, void 0, void 0, function* () { const organizations = yield organization_1.OrganizationModel.find({}); return organizations.map((organization) => organization.name); }); exports.getAllOrganizationName = getAllOrganizationName; const getAllActiveOrganizationName = () => __awaiter(void 0, void 0, void 0, function* () { const organizations = yield organization_1.OrganizationModel.find({ active: true, }); return organizations.map((organization) => organization.name); }); exports.getAllActiveOrganizationName = getAllActiveOrganizationName; const getOrganizationIdsByNames = (names) => __awaiter(void 0, void 0, void 0, function* () { const anchors = names.map((name) => common_1.fitAnchor(name)); const organizations = yield organization_1.OrganizationModel.find({ anchor: { $in: anchors, }, }, { _id: 1, }); return organizations.map((organization) => organization._id); }); exports.getOrganizationIdsByNames = getOrganizationIdsByNames; const getOrganizationsByQuery = (query) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find(query); }); exports.getOrganizationsByQuery = getOrganizationsByQuery; const getOrganizationsByQueryLean = (query) => __awaiter(void 0, void 0, void 0, function* () { return yield organization_1.OrganizationModel.find(query).lean(); }); exports.getOrganizationsByQueryLean = getOrganizationsByQueryLean;