UNPKG

@sphereon/ssi-sdk.data-store

Version:

97 lines (70 loc) 3.78 kB
import { type ActionSubType, ActionType, InitiatorType, LoggingEventType, LogLevel, SubSystem, System, SystemCorrelationIdType, } from '@sphereon/ssi-types' import { CredentialType, PartyCorrelationType } from '@sphereon/ssi-sdk.core' import { typeOrmDateTime } from '@sphereon/ssi-sdk.agent-config' import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm' //TODO this entity, also contains some optional fields that are related to another event type (Activity) later we might want to refactor and reorganize this. // For now I've added a discriminator value called eventType that can be one of the three types of events: 1. General, 2. Audit, and 3. Activity @Entity('AuditEvents') export class AuditEventEntity extends BaseEntity { @PrimaryGeneratedColumn('uuid') id!: string @Column({ name: 'timestamp', nullable: false, unique: false, type: typeOrmDateTime() }) timestamp!: Date @Column('simple-enum', { name: 'eventType', enum: LoggingEventType, nullable: false, unique: false }) type!: LoggingEventType @Column('simple-enum', { name: 'level', enum: LogLevel, nullable: false, unique: false }) level!: LogLevel @Column('text', { name: 'correlationId', nullable: false, unique: false }) correlationId!: string @Column('simple-enum', { name: 'system', enum: System, nullable: false, unique: false }) system!: System @Column('simple-enum', { name: 'subSystemType', enum: SubSystem, nullable: false, unique: false }) subSystemType!: SubSystem @Column('simple-enum', { name: 'actionType', enum: ActionType, nullable: false, unique: false }) actionType!: ActionType @Column({ name: 'actionSubType', type: 'varchar', nullable: false, unique: false }) actionSubType!: ActionSubType @Column('simple-enum', { name: 'initiatorType', enum: InitiatorType, nullable: false, unique: false }) initiatorType!: InitiatorType @Column('simple-enum', { name: 'systemCorrelationIdType', enum: SystemCorrelationIdType, nullable: true, unique: false }) systemCorrelationIdType?: SystemCorrelationIdType @Column('text', { name: 'systemCorrelationId', nullable: true, unique: false }) systemCorrelationId?: string @Column('text', { name: 'systemAlias', nullable: true, unique: false }) systemAlias?: string @Column('simple-enum', { name: 'partyCorrelationType', enum: PartyCorrelationType, nullable: true, unique: false }) partyCorrelationType?: PartyCorrelationType @Column('text', { name: 'partyCorrelationId', nullable: true, unique: false }) partyCorrelationId?: string @Column('text', { name: 'partyAlias', nullable: true, unique: false }) partyAlias?: string @Column('text', { name: 'description', nullable: false, unique: false }) description!: string @Column('simple-enum', { name: 'credentialType', enum: CredentialType, nullable: true, unique: false }) credentialType?: CredentialType @Column('text', { name: 'credentialHash', nullable: true, unique: false }) credentialHash?: string @Column('text', { name: 'parentCredentialHash', nullable: true, unique: false }) parentCredentialHash?: string @Column('text', { name: 'originalCredential', nullable: true, unique: false }) originalCredential?: string @Column('text', { name: 'sharePurpose', nullable: true, unique: false }) sharePurpose?: string @Column('text', { name: 'data', nullable: true, unique: false }) data?: string @Column('text', { name: 'diagnosticData', nullable: true, unique: false }) diagnosticData?: string @CreateDateColumn({ name: 'created_at', nullable: false, type: typeOrmDateTime() }) createdAt!: Date @UpdateDateColumn({ name: 'last_updated_at', nullable: false, type: typeOrmDateTime() }) lastUpdatedAt!: Date }