@brandazm/dynamic-permissions
Version:
A flexible and powerful permissions management system for NestJS applications with built-in security features
52 lines • 2.17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Initial_1749316822040 = void 0;
class Initial_1749316822040 {
constructor() {
this.name = '1749316822040';
}
async up(queryRunner) {
await queryRunner.query(`
CREATE TABLE "permissions" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"name" varchar NOT NULL,
"description" varchar,
"level" integer NOT NULL DEFAULT 0,
"is_active" boolean NOT NULL DEFAULT true,
"created_at" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
)
`);
await queryRunner.query(`
CREATE TABLE "router_permissions" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"route" varchar,
"method" varchar,
"permission_id" varchar,
"is_active" boolean NOT NULL DEFAULT true,
"created_at" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
)
`);
await queryRunner.query(`
CREATE TABLE "user_permissions" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"user_id" varchar,
"permission_id" varchar,
"granted_at" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
"expires_at" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
"is_active" boolean NOT NULL DEFAULT true
)
`);
await queryRunner.query(`CREATE INDEX "IDX_permissions_name" ON "permissions" ("name");`);
await queryRunner.query(`CREATE INDEX "IDX_router_permissions_route" ON "router_permissions" ("route");`);
await queryRunner.query(`CREATE INDEX "IDX_user_permissions_user" ON "user_permissions" ("user_id");`);
}
async down(queryRunner) {
await queryRunner.query(`DROP TABLE IF EXISTS "user_permissions"`);
await queryRunner.query(`DROP TABLE IF EXISTS "router_permissions"`);
await queryRunner.query(`DROP TABLE IF EXISTS "permissions"`);
}
}
exports.Initial_1749316822040 = Initial_1749316822040;
//# sourceMappingURL=1749316822040-Initial_1749316822040.js.map