UNPKG

@sphereon/ssi-sdk.data-store

Version:

99 lines (70 loc) 3.47 kB
import { typeormDate, typeOrmDateTime } from '@sphereon/ssi-sdk.agent-config' import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm' import { CredentialCorrelationType, CredentialDocumentFormat, CredentialRole, CredentialStateType, type DigitalCredential, DocumentType, RegulationType, } from '../../types' @Entity('DigitalCredential') export class DigitalCredentialEntity extends BaseEntity implements DigitalCredential { @PrimaryGeneratedColumn('uuid') id!: string @Column('text', { name: 'parent_id', nullable: true }) parentId?: string @Column('simple-enum', { name: 'document_type', enum: DocumentType, nullable: false }) documentType!: DocumentType @Column('simple-enum', { name: 'regulation_type', enum: RegulationType, nullable: false }) regulationType!: RegulationType @Column('simple-enum', { name: 'document_format', enum: CredentialDocumentFormat, nullable: false }) documentFormat!: CredentialDocumentFormat @Column('simple-enum', { name: 'credential_role', enum: CredentialRole, nullable: false }) credentialRole!: CredentialRole @Column('text', { name: 'raw_document', nullable: false }) rawDocument!: string @Column('text', { name: 'uniform_document', nullable: false }) uniformDocument!: string @Column('text', { name: 'credential_id', nullable: true, unique: false }) credentialId!: string @Column('text', { name: 'hash', nullable: false, unique: true }) hash!: string @Column('text', { name: 'kms_key_ref', nullable: true }) kmsKeyRef!: string @Column('text', { name: 'identifier_method', nullable: true }) identifierMethod!: string @Column('simple-enum', { name: 'issuer_correlation_type', enum: CredentialCorrelationType, nullable: false }) issuerCorrelationType!: CredentialCorrelationType @Column('simple-enum', { name: 'subject_correlation_type', enum: CredentialCorrelationType, nullable: true }) subjectCorrelationType?: CredentialCorrelationType @Column('simple-enum', { name: 'rp_correlation_type', enum: CredentialCorrelationType, nullable: true }) rpCorrelationType?: CredentialCorrelationType @Column('boolean', { name: 'issuer_signed', nullable: true }) isIssuerSigned?: boolean @Column('text', { name: 'issuer_correlation_id', nullable: false }) issuerCorrelationId!: string @Column('text', { name: 'subject_correlation_id', nullable: true }) subjectCorrelationId?: string @Column('text', { name: 'rp_correlation_id', nullable: true }) rpCorrelationId?: string @Column('simple-enum', { name: 'verified_state', enum: CredentialStateType, nullable: true }) verifiedState?: CredentialStateType @Column('text', { name: 'tenant_id', nullable: true }) tenantId?: string @CreateDateColumn({ name: 'created_at', nullable: false, type: typeOrmDateTime() }) createdAt!: Date @Column({ name: 'presented_at', nullable: true, type: typeormDate() }) presentedAt?: Date @UpdateDateColumn({ name: 'last_updated_at', nullable: false, type: typeOrmDateTime() }) lastUpdatedAt!: Date @Column({ name: 'valid_until', nullable: true, type: typeormDate() }) validUntil?: Date @Column({ name: 'valid_from', nullable: true, type: typeormDate() }) validFrom?: Date @Column({ name: 'verified_at', nullable: true, type: typeOrmDateTime() }) verifiedAt?: Date @Column({ name: 'revoked_at', nullable: true, type: typeOrmDateTime() }) revokedAt?: Date }