feat(SPG-321) REST API Read User Privileges
parent
af06f2d08e
commit
e442ca717e
|
@ -7,7 +7,9 @@ export enum STATUS {
|
||||||
INACTIVE = 'inactive',
|
INACTIVE = 'inactive',
|
||||||
PENDING = 'pending',
|
PENDING = 'pending',
|
||||||
REFUNDED = 'refunded',
|
REFUNDED = 'refunded',
|
||||||
|
REJECTED = 'rejected',
|
||||||
SETTLED = 'settled',
|
SETTLED = 'settled',
|
||||||
|
WAITING = 'waiting',
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum ORDER_TYPE {
|
export enum ORDER_TYPE {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
export enum MODULE_NAME {
|
export enum MODULE_NAME {
|
||||||
USER_PRIVILEGE = 'user-privileges',
|
USER_PRIVILEGE = 'user-privileges',
|
||||||
|
USER_PRIVILEGE_CONFIGURATION = 'user-privilege-configurations',
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
export enum TABLE_NAME {
|
export enum TABLE_NAME {
|
||||||
|
USER = 'users',
|
||||||
USER_PRIVILEGE = 'user_privileges',
|
USER_PRIVILEGE = 'user_privileges',
|
||||||
|
USER_PRIVILEGE_CONFIGURATION = 'user_privilege_configurations',
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||||
|
|
||||||
|
export class UserPrivilege1717385661972 implements MigrationInterface {
|
||||||
|
name = 'UserPrivilege1717385661972';
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`CREATE TABLE "user_privilege_configurations" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "module" character varying(125) NOT NULL, "module_label" character varying(125), "menu" character varying(125) NOT NULL, "menu_label" character varying(125), "sub_menu" character varying(125), "sub_menu_label" character varying(125), "view" boolean, "create" boolean, "edit" boolean, "delete" boolean, "cancel" boolean, "confirm" boolean, "index" integer DEFAULT '0', "user_privilege_id" uuid, CONSTRAINT "PK_8ed47d7806c97dbf77969acc075" PRIMARY KEY ("id"))`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`CREATE TYPE "public"."user_privileges_status_enum" AS ENUM('active', 'cancel', 'confirmed', 'draft', 'expired', 'inactive', 'pending', 'refunded', 'rejected', 'settled', 'waiting')`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`CREATE TABLE "user_privileges" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "creator_id" character varying(36), "creator_name" character varying(125), "editor_id" character varying(36), "editor_name" character varying(125), "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "status" "public"."user_privileges_status_enum" NOT NULL DEFAULT 'draft', "name" character varying(125) NOT NULL, CONSTRAINT "PK_4429e115dd3db86b6cf1f044ea5" PRIMARY KEY ("id"))`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_privilege_configurations" ADD CONSTRAINT "FK_ef45354482245798d95f78e450a" FOREIGN KEY ("user_privilege_id") REFERENCES "user_privileges"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_privilege_configurations" DROP CONSTRAINT "FK_ef45354482245798d95f78e450a"`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(`DROP TABLE "user_privileges"`);
|
||||||
|
await queryRunner.query(`DROP TYPE "public"."user_privileges_status_enum"`);
|
||||||
|
await queryRunner.query(`DROP TABLE "user_privilege_configurations"`);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,19 +1,17 @@
|
||||||
import { Injectable } from "@nestjs/common";
|
import { Injectable } from '@nestjs/common';
|
||||||
import { UserPrivilegeEntity } from "../../domain/entities/user-privilege.entity";
|
import { UserPrivilegeEntity } from '../../domain/entities/user-privilege.entity';
|
||||||
import { InjectRepository } from "@nestjs/typeorm";
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { UserPrivilegeModel } from "../model/user-privilege.model";
|
import { UserPrivilegeModel } from '../models/user-privilege.model';
|
||||||
import { CONNECTION_NAME } from "src/core/strings/constants/base.constants";
|
import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants';
|
||||||
import { Repository } from "typeorm";
|
import { Repository } from 'typeorm';
|
||||||
import { BaseReadService } from "src/core/modules/data/service/base-read.service";
|
import { BaseReadService } from 'src/core/modules/data/service/base-read.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UserPrivilegeReadService extends BaseReadService<UserPrivilegeEntity> {
|
export class UserPrivilegeReadService extends BaseReadService<UserPrivilegeEntity> {
|
||||||
|
constructor(
|
||||||
constructor(
|
@InjectRepository(UserPrivilegeModel, CONNECTION_NAME.DEFAULT)
|
||||||
@InjectRepository(UserPrivilegeModel, CONNECTION_NAME.DEFAULT)
|
private repo: Repository<UserPrivilegeModel>,
|
||||||
private repo: Repository<UserPrivilegeModel>,
|
) {
|
||||||
) {
|
|
||||||
super(repo);
|
super(repo);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { BaseFilterEntity } from 'src/core/modules/domain/entities/base-filter.entity';
|
||||||
|
|
||||||
|
export interface FilterUserPrivilegeConfigurationEntity
|
||||||
|
extends BaseFilterEntity {
|
||||||
|
user_privilege_ids: string[];
|
||||||
|
}
|
|
@ -1,5 +1,3 @@
|
||||||
import { BaseFilterEntity } from "src/core/modules/domain/entities/base-filter.entity";
|
import { BaseFilterEntity } from 'src/core/modules/domain/entities/base-filter.entity';
|
||||||
|
|
||||||
export interface FilterUserPrivilegeEntity extends BaseFilterEntity {
|
export interface FilterUserPrivilegeEntity extends BaseFilterEntity {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { BaseIndexManager } from 'src/core/modules/domain/usecase/managers/base-index.manager';
|
||||||
|
import { UserPrivilegeConfigurationEntity } from '../../../entities/user-privilege-configuration.entity';
|
||||||
|
import { Param } from 'src/core/helpers/query/specific-search.helper';
|
||||||
|
import { SelectQueryBuilder } from 'typeorm';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class IndexUserPrivilegeConfigurationManager extends BaseIndexManager<UserPrivilegeConfigurationEntity> {
|
||||||
|
async prepareData(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async beforeProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async afterProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
get specificFilter(): Param[] {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setQueryFilter(
|
||||||
|
queryBuilder: SelectQueryBuilder<UserPrivilegeConfigurationEntity>,
|
||||||
|
): SelectQueryBuilder<UserPrivilegeConfigurationEntity> {
|
||||||
|
console.log(this.filterParam, 'param');
|
||||||
|
if (this.filterParam.user_privilege_ids) {
|
||||||
|
queryBuilder.andWhere(`user_privilege_id In (:...privilegeIds)`, {
|
||||||
|
privilegeIds: this.filterParam.user_privilege_ids,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return queryBuilder;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { BaseDetailManager } from 'src/core/modules/domain/usecase/managers/base-detail.manager';
|
||||||
|
import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity';
|
||||||
|
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class DetailUserPrivilegeManager extends BaseDetailManager<UserPrivilegeEntity> {
|
||||||
|
get setFindProperties(): any {
|
||||||
|
return {
|
||||||
|
id: this.dataId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get selectData(): string[] {
|
||||||
|
return ['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
get relationData(): string[] {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
async prepareData(): Promise<void> {
|
||||||
|
this.tableName = TABLE_NAME.USER_PRIVILEGE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async beforeProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async afterProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { BaseIndexManager } from 'src/core/modules/domain/usecase/managers/base-index.manager';
|
||||||
|
import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity';
|
||||||
|
import { SelectQueryBuilder } from 'typeorm';
|
||||||
|
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
||||||
|
import { Param } from 'src/core/helpers/query/specific-search.helper';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class IndexUserPrivilegeManager extends BaseIndexManager<UserPrivilegeEntity> {
|
||||||
|
async prepareData(): Promise<void> {
|
||||||
|
this.tableName = TABLE_NAME.USER_PRIVILEGE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async beforeProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async afterProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
get specificFilter(): Param[] {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
setQueryFilter(
|
||||||
|
queryBuilder: SelectQueryBuilder<UserPrivilegeEntity>,
|
||||||
|
): SelectQueryBuilder<UserPrivilegeEntity> {
|
||||||
|
return queryBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
setFilterSearch(): string[] {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { IndexUserPrivilegeManager } from './managers/index-user-privilege.manager';
|
||||||
|
import { UserPrivilegeReadService } from '../../../data/service/user-privilege-read.service';
|
||||||
|
import { UserPrivilegeEntity } from '../../entities/user-privilege.entity';
|
||||||
|
import { PaginationResponse } from 'src/core/response/domain/ok-response.interface';
|
||||||
|
import { BaseReadOrchestrator } from 'src/core/modules/domain/usecase/orchestrators/base-read.orchestrator';
|
||||||
|
import { DetailUserPrivilegeManager } from './managers/detail-user-privilege.manager';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class UserPrivilegeReadOrchestrator extends BaseReadOrchestrator<UserPrivilegeEntity> {
|
||||||
|
constructor(
|
||||||
|
private indexManager: IndexUserPrivilegeManager,
|
||||||
|
private detailManager: DetailUserPrivilegeManager,
|
||||||
|
private serviceData: UserPrivilegeReadService,
|
||||||
|
) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async index(params): Promise<PaginationResponse<UserPrivilegeEntity>> {
|
||||||
|
this.indexManager.setFilterParam(params);
|
||||||
|
this.indexManager.setService(this.serviceData);
|
||||||
|
await this.indexManager.execute();
|
||||||
|
return this.indexManager.getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
async detail(dataId: string): Promise<UserPrivilegeEntity> {
|
||||||
|
this.detailManager.setData(dataId);
|
||||||
|
this.detailManager.setService(this.serviceData);
|
||||||
|
await this.detailManager.execute();
|
||||||
|
return this.detailManager.getResult();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { BaseFilterDto } from 'src/core/modules/infrastructure/dto/base-filter.dto';
|
||||||
|
import { FilterUserPrivilegeConfigurationEntity } from '../../domain/entities/filter-user-privilege-configuration.entity';
|
||||||
|
import { ApiProperty } from '@nestjs/swagger';
|
||||||
|
import { Transform } from 'class-transformer';
|
||||||
|
|
||||||
|
export class FilterUserPrivilegeConfigurationDto
|
||||||
|
extends BaseFilterDto
|
||||||
|
implements FilterUserPrivilegeConfigurationEntity
|
||||||
|
{
|
||||||
|
@ApiProperty({ type: ['string'], required: false })
|
||||||
|
@Transform((body) => {
|
||||||
|
return Array.isArray(body.value) ? body.value : [body.value];
|
||||||
|
})
|
||||||
|
user_privilege_ids: string[];
|
||||||
|
}
|
|
@ -1,4 +1,6 @@
|
||||||
import { BaseFilterDto } from "src/core/modules/infrastructure/dto/base-filter.dto";
|
import { BaseFilterDto } from 'src/core/modules/infrastructure/dto/base-filter.dto';
|
||||||
import { FilterUserPrivilegeEntity } from "../../domain/entities/filter-user-privilege.entity";
|
import { FilterUserPrivilegeEntity } from '../../domain/entities/filter-user-privilege.entity';
|
||||||
|
|
||||||
export class FilterUserPrivilegeDto extends BaseFilterDto implements FilterUserPrivilegeEntity {}
|
export class FilterUserPrivilegeDto
|
||||||
|
extends BaseFilterDto
|
||||||
|
implements FilterUserPrivilegeEntity {}
|
||||||
|
|
Loading…
Reference in New Issue