feat: added get user projects function in project
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
||||||
|
|
||||||
export class Migrations1783244654421 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||||
|
|
||||||
|
export class TaskmanagerAddingNewEnumValueForPermissionEnumType1783324039378 implements MigrationInterface {
|
||||||
|
name = 'TaskmanagerAddingNewEnumValueForPermissionEnumType1783324039378'
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`ALTER TYPE "public"."permission_name_enum" RENAME TO "permission_name_enum_old"`);
|
||||||
|
await queryRunner.query(`CREATE TYPE "public"."permission_name_enum" AS ENUM('services', 'customers', 'agents', 'developers', 'invoices', 'transactions', 'discounts', 'admins', 'tickets', 'criticisms', 'contacts_us', 'advertisements', 'announcements', 'blogs', 'learnings', 'logs', 'settings', 'bank_accounts', 'payments', 'manage_sso_clients', 'support_plan', 'dmenu', 'dkala', 'dpage', 'dmail', 'reseller', 'workspace', 'project')`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "permission" ALTER COLUMN "name" TYPE "public"."permission_name_enum" USING "name"::"text"::"public"."permission_name_enum"`);
|
||||||
|
await queryRunner.query(`DROP TYPE "public"."permission_name_enum_old"`);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`CREATE TYPE "public"."permission_name_enum_old" AS ENUM('services', 'customers', 'agents', 'developers', 'invoices', 'transactions', 'discounts', 'admins', 'tickets', 'criticisms', 'contacts_us', 'advertisements', 'announcements', 'blogs', 'learnings', 'logs', 'settings', 'bank_accounts', 'payments', 'manage_sso_clients', 'support_plan', 'dmenu', 'dkala', 'dpage', 'dmail', 'reseller', 'workspace')`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "permission" ALTER COLUMN "name" TYPE "public"."permission_name_enum_old" USING "name"::"text"::"public"."permission_name_enum_old"`);
|
||||||
|
await queryRunner.query(`DROP TYPE "public"."permission_name_enum"`);
|
||||||
|
await queryRunner.query(`ALTER TYPE "public"."permission_name_enum_old" RENAME TO "permission_name_enum"`);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,7 +8,10 @@ import { TMProject } from "../entities/project.entity";
|
|||||||
import { AdminRoute } from "../../../common/decorators/admin.decorator";
|
import { AdminRoute } from "../../../common/decorators/admin.decorator";
|
||||||
import { PermissionsDec } from "../../../common/decorators/permission.decorator";
|
import { PermissionsDec } from "../../../common/decorators/permission.decorator";
|
||||||
import { PermissionEnum } from "../../users/enums/permission.enum";
|
import { PermissionEnum } from "../../users/enums/permission.enum";
|
||||||
|
import { UserDec } from "../../../common/decorators/user.decorator";
|
||||||
|
import { AuthGuards } from "../../../common/decorators/auth-guard.decorator";
|
||||||
|
|
||||||
|
@AuthGuards()
|
||||||
@AdminRoute()
|
@AdminRoute()
|
||||||
@ApiTags("Task Manager - Projects")
|
@ApiTags("Task Manager - Projects")
|
||||||
@Controller("task-manager/projects")
|
@Controller("task-manager/projects")
|
||||||
@@ -76,4 +79,14 @@ export class ProjectController {
|
|||||||
): Promise<{ projects: TMProject[]; count: number; paginate: true }> {
|
): Promise<{ projects: TMProject[]; count: number; paginate: true }> {
|
||||||
return this.projectService.findByWorkspace(wsId, pagination);
|
return this.projectService.findByWorkspace(wsId, pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Get("/user")
|
||||||
|
@ApiOperation({ summary: "Get user projects!" })
|
||||||
|
@ApiResponse({ status: 200, description: "Got user projects successfully!" })
|
||||||
|
findUserProjects(
|
||||||
|
@UserDec("id") userId: string,
|
||||||
|
@Query() pagination: PaginationDto,
|
||||||
|
): Promise<{ projects: TMProject[]; count: number; paginate: true }> {
|
||||||
|
return this.projectService.findUserProjects(userId, pagination);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,4 +149,14 @@ export class ProjectService {
|
|||||||
await this.projectRepository.delete(id);
|
await this.projectRepository.delete(id);
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async findUserProjects(userId: string, pagination: PaginationDto): Promise<{ projects: TMProject[]; count: number; paginate: true }> {
|
||||||
|
const page = pagination.page ?? 1;
|
||||||
|
const limit = pagination.limit ?? 10;
|
||||||
|
const skip = (page - 1) * limit;
|
||||||
|
|
||||||
|
const [projects, count] = await this.projectRepository.findUserProjects(userId, skip, limit);
|
||||||
|
|
||||||
|
return { projects, count, paginate: true };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,13 @@ export class ProjectRepository extends Repository<TMProject> {
|
|||||||
) {
|
) {
|
||||||
super(projectRepository.target, projectRepository.manager, projectRepository.queryRunner);
|
super(projectRepository.target, projectRepository.manager, projectRepository.queryRunner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async findUserProjects(userId: string, skip?: number, take?: number): Promise<[TMProject[], number]> {
|
||||||
|
return this.createQueryBuilder('project')
|
||||||
|
.innerJoin('project.users', 'user')
|
||||||
|
.where('user.id = :userId', {userId})
|
||||||
|
.skip(skip ?? 0)
|
||||||
|
.take(take ?? 0)
|
||||||
|
.getManyAndCount();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user