UNPKG

@sphereon/ssi-sdk.data-store

Version:

89 lines (77 loc) 2.66 kB
import typeorm from 'typeorm' const { BaseEntity, BeforeInsert, BeforeUpdate, Column, CreateDateColumn, Entity, JoinColumn, OneToOne, PrimaryGeneratedColumn, TableInheritance, UpdateDateColumn, } = typeorm import { typeOrmDateTime } from '@sphereon/ssi-sdk.agent-config' import { ImageAttributesEntity } from './ImageAttributesEntity' import { BackgroundAttributesEntity } from './BackgroundAttributesEntity' import { TextAttributesEntity } from './TextAttributesEntity' import { validate, Validate, ValidationError } from 'class-validator' import { IsNonEmptyStringConstraint } from '../validators' @Entity('BaseLocaleBranding') @TableInheritance({ column: { type: 'varchar', name: 'type' } }) export class BaseLocaleBrandingEntity extends BaseEntity { @PrimaryGeneratedColumn('uuid') id!: string @Column('varchar', { name: 'alias', length: 255, nullable: true, unique: false }) @Validate(IsNonEmptyStringConstraint, { message: 'Blank aliases are not allowed' }) alias?: string @Column('varchar', { name: 'locale', length: 255, nullable: false, unique: false }) locale?: string @OneToOne(() => ImageAttributesEntity, { cascade: true, onDelete: 'CASCADE', eager: true, nullable: true, }) @JoinColumn({ name: 'logoId' }) logo?: ImageAttributesEntity @Column('varchar', { name: 'description', length: 255, nullable: true, unique: false }) @Validate(IsNonEmptyStringConstraint, { message: 'Blank descriptions are not allowed' }) description?: string @OneToOne(() => BackgroundAttributesEntity, { cascade: true, onDelete: 'CASCADE', eager: true, nullable: true, }) @JoinColumn({ name: 'backgroundId' }) background?: BackgroundAttributesEntity @OneToOne(() => TextAttributesEntity, { cascade: true, onDelete: 'CASCADE', eager: true, nullable: true, }) @JoinColumn({ name: 'textId' }) text?: TextAttributesEntity @CreateDateColumn({ name: 'created_at', nullable: false, type: typeOrmDateTime() }) createdAt!: Date @UpdateDateColumn({ name: 'last_updated_at', nullable: false, type: typeOrmDateTime() }) lastUpdatedAt!: Date // By default, @UpdateDateColumn in TypeORM updates the timestamp only when the entity's top-level properties change. @BeforeInsert() @BeforeUpdate() updateUpdatedDate(): void { this.lastUpdatedAt = new Date() } @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 } }