@brandazm/dynamic-permissions
Version:
A flexible and powerful permissions management system for NestJS applications with built-in security features
86 lines • 3.94 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamicQueryBuilder = void 0;
class DynamicQueryBuilder {
static buildPermissionQuery(queryBuilder, config, alias = 'permission') {
const { id, name, description, level, is_active, created_at, updated_at } = config, customFields = __rest(config, ["id", "name", "description", "level", "is_active", "created_at", "updated_at"]);
queryBuilder.select(`${alias}.${id}`, 'id').addSelect(`${alias}.${name}`, 'name');
if (description) {
queryBuilder.addSelect(`${alias}.${description}`, 'description');
}
if (level) {
queryBuilder.addSelect(`${alias}.${level}`, 'level');
}
if (is_active) {
queryBuilder.addSelect(`${alias}.${is_active}`, 'is_active');
}
if (created_at) {
queryBuilder.addSelect(`${alias}.${created_at}`, 'created_at');
}
if (updated_at) {
queryBuilder.addSelect(`${alias}.${updated_at}`, 'updated_at');
}
Object.entries(customFields).forEach(([key, value]) => {
if (value) {
queryBuilder.addSelect(`${alias}.${value}`, key);
}
});
return queryBuilder;
}
static buildUserPermissionQuery(queryBuilder, config, alias = 'userPermission') {
const { id, user_id, permission_id, granted_at, expires_at, is_active } = config, customFields = __rest(config, ["id", "user_id", "permission_id", "granted_at", "expires_at", "is_active"]);
queryBuilder
.select(`${alias}.${id}`, 'id')
.addSelect(`${alias}.${user_id}`, 'user_id')
.addSelect(`${alias}.${permission_id}`, 'permission_id')
.addSelect(`${alias}.${granted_at}`, 'granted_at');
if (expires_at) {
queryBuilder.addSelect(`${alias}.${expires_at}`, 'expires_at');
}
if (is_active) {
queryBuilder.addSelect(`${alias}.${is_active}`, 'is_active');
}
Object.entries(customFields).forEach(([key, value]) => {
if (value) {
queryBuilder.addSelect(`${alias}.${value}`, key);
}
});
return queryBuilder;
}
static buildRouterPermissionQuery(queryBuilder, config, alias = 'routerPermission') {
const { id, route, method, permission_id, is_active, created_at, updated_at } = config, customFields = __rest(config, ["id", "route", "method", "permission_id", "is_active", "created_at", "updated_at"]);
queryBuilder
.select(`${alias}.${id}`, 'id')
.addSelect(`${alias}.${route}`, 'route')
.addSelect(`${alias}.${method}`, 'method')
.addSelect(`${alias}.${permission_id}`, 'permission_id');
if (is_active) {
queryBuilder.addSelect(`${alias}.${is_active}`, 'is_active');
}
if (created_at) {
queryBuilder.addSelect(`${alias}.${created_at}`, 'created_at');
}
if (updated_at) {
queryBuilder.addSelect(`${alias}.${updated_at}`, 'updated_at');
}
Object.entries(customFields).forEach(([key, value]) => {
if (value) {
queryBuilder.addSelect(`${alias}.${value}`, key);
}
});
return queryBuilder;
}
}
exports.DynamicQueryBuilder = DynamicQueryBuilder;
//# sourceMappingURL=query-builder.util.js.map