I want apply DB level unique constraint on particular value of column otherwise repeated values can be inserted. I have implemented it using Unique decorator but can't seem to apply some partial indexing ```ts /* eslint-disable import/no-cycle */
import { ApiHideProperty } from '@nestjs/swagger';
import { Column, Entity, JoinColumn, ManyToOne, Unique } from 'typeorm';
import { BaseEntity } from '../../../common/base/base.entity';
import { User } from '../user.entity';
export enum UserActionType {
BLOCK = 'block',
REPORT = 'report',
}
export enum ReportStatus {
RECIEVED = 'recieved',
REVIEWING = 'awaiting',
DECIDED = 'decided',
}
@Unique('unique_user_action', ['userId', 'actionUserId', 'actionType'])
@Entity()
export class UserAction extends BaseEntity {
@Column({ nullable: false }) // this will be authenticated user id
userId!: number;
@Column({ nullable: true, default: null }) /// assigned by relationship
actionUserId!: number;
@Column({ default: false })
blockRelated!: boolean;
@Column({ nullable: true, default: null })
reportReason!: string;
@Column({ type: 'enum', enum: ReportStatus, default: ReportStatus.RECIEVED }) // when created set first status
status!: ReportStatus;
@Column({ type: 'enum', enum: UserActionType })
actionType!: UserActionType;
@ApiHideProperty()
@ManyToOne(() => User, (user) => user.userActions, { onDelete: 'CASCADE' }) // many relationship this is why use plural
@JoinColumn({ name: 'action_user_id' })
actionUser!: User;
}