UNPKG

@sphereon/ssi-sdk.data-store

Version:

39 lines (32 loc) 1.6 kB
import { validate, Validate, ValidationError } from 'class-validator' import { BaseEntity, BeforeInsert, BeforeUpdate, Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' import { IsNonEmptyStringConstraint } from '../validators' import { CredentialLocaleBrandingEntity } from './CredentialLocaleBrandingEntity' @Entity('CredentialClaims') @Index('IDX_CredentialClaimsEntity_credentialLocaleBranding_locale', ['credentialLocaleBranding', 'key'], { unique: true }) export class CredentialClaimsEntity extends BaseEntity { @PrimaryGeneratedColumn('uuid') id!: string @Column('varchar', { name: 'key', length: 255, nullable: false, unique: false }) @Validate(IsNonEmptyStringConstraint, { message: 'Blank claim keys are not allowed' }) key!: string @Column('varchar', { name: 'name', length: 255, nullable: false, unique: false }) @Validate(IsNonEmptyStringConstraint, { message: 'Blank claim names are not allowed' }) name!: string @Column('integer', { name: 'order', nullable: true }) order?: number @ManyToOne(() => CredentialLocaleBrandingEntity, (credentialLocaleBranding: CredentialLocaleBrandingEntity) => credentialLocaleBranding.claims, { cascade: ['insert', 'update'], onDelete: 'CASCADE', }) credentialLocaleBranding!: CredentialLocaleBrandingEntity @BeforeInsert() @BeforeUpdate() async validate(): Promise<undefined> { const validation: Array<ValidationError> = await validate(this) if (validation.length > 0) { return Promise.reject(Error(Object.values(validation[0].constraints!)[0])) } return } }