@brontosaurus/db
Version:
:ocean: Schema for brontosaurus
390 lines (389 loc) • 18.2 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());
});
};
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;