@sphereon/ssi-sdk.data-store
Version:
45 lines (37 loc) • 1.61 kB
text/typescript
import typeorm from 'typeorm'
const { Entity, Column, PrimaryGeneratedColumn, BaseEntity, OneToOne, JoinColumn, BeforeInsert, BeforeUpdate } = typeorm
import { CorrelationIdentifierType, ValidationConstraint } from '../../types'
import { IdentityEntity } from './IdentityEntity'
import { IsNotEmpty, validate, ValidationError } from 'class-validator'
import { getConstraint } from '../../utils/ValidatorUtils'
('CorrelationIdentifier')
export class CorrelationIdentifierEntity extends BaseEntity {
('uuid')
id!: string
('simple-enum', { name: 'type', enum: CorrelationIdentifierType, nullable: false })
type!: CorrelationIdentifierType
('text', { name: 'correlation_id', nullable: false, unique: true })
({ message: 'Blank correlation ids are not allowed' })
correlationId!: string
('text', { name: 'owner_id', nullable: true })
ownerId?: string
('text', { name: 'tenant_id', nullable: true })
tenantId?: string
(() => IdentityEntity, (identity: IdentityEntity) => identity.identifier, {
onDelete: 'CASCADE',
})
({ name: 'identity_id' })
identity!: IdentityEntity
()
()
async validate(): Promise<void> {
const validation: Array<ValidationError> = await validate(this)
if (validation.length > 0) {
const constraint: ValidationConstraint | undefined = getConstraint(validation[0])
if (constraint) {
const message: string = Object.values(constraint!)[0]
return Promise.reject(Error(message))
}
}
}
}