61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm';
|
|
|
|
export enum AssetVersionChangeType {
|
|
BASELINE = 'BASELINE',
|
|
CREATED = 'CREATED',
|
|
UPDATED = 'UPDATED',
|
|
CONTEXT_CHANGED = 'CONTEXT_CHANGED',
|
|
STATUS_CHANGED = 'STATUS_CHANGED',
|
|
OPERATIONAL_STATUS_CHANGED = 'OPERATIONAL_STATUS_CHANGED',
|
|
REGISTRY_UPDATED = 'REGISTRY_UPDATED',
|
|
GEOMETRY_UPDATED = 'GEOMETRY_UPDATED',
|
|
GEOMETRY_REMOVED = 'GEOMETRY_REMOVED',
|
|
MEDIA_UPLOADED = 'MEDIA_UPLOADED',
|
|
MEDIA_UPDATED = 'MEDIA_UPDATED',
|
|
MEDIA_REMOVED = 'MEDIA_REMOVED',
|
|
PROVENANCE_BASELINE = 'PROVENANCE_BASELINE',
|
|
PROVENANCE_UPDATED = 'PROVENANCE_UPDATED',
|
|
PROVENANCE_VERIFIED = 'PROVENANCE_VERIFIED',
|
|
}
|
|
|
|
@Entity({ name: 'asset_versions' })
|
|
@Index('idx_asset_versions_asset_number', ['assetId', 'versionNumber'], {
|
|
unique: true,
|
|
})
|
|
@Index('idx_asset_versions_occurred_at', ['occurredAt'])
|
|
@Index('idx_asset_versions_change_type', ['changeType'])
|
|
export class AssetVersion {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id!: string;
|
|
|
|
@Column({ name: 'asset_id', type: 'uuid' })
|
|
assetId!: string;
|
|
|
|
@Column({ name: 'version_number', type: 'integer' })
|
|
versionNumber!: number;
|
|
|
|
@Column({ name: 'change_type', type: 'varchar', length: 32 })
|
|
changeType!: AssetVersionChangeType;
|
|
|
|
@Column({ name: 'changed_fields', type: 'text', array: true, default: () => "'{}'" })
|
|
changedFields!: string[];
|
|
|
|
@Column({ type: 'jsonb' })
|
|
snapshot!: Record<string, unknown>;
|
|
|
|
@Column({ name: 'occurred_at', type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP' })
|
|
occurredAt!: Date;
|
|
|
|
@Column({ name: 'actor_user_id', type: 'uuid', nullable: true })
|
|
actorUserId!: string | null;
|
|
|
|
@Column({ name: 'actor_username', type: 'varchar', length: 80, nullable: true })
|
|
actorUsername!: string | null;
|
|
|
|
@Column({ type: 'varchar', length: 32 })
|
|
source!: string;
|
|
|
|
@Column({ name: 'request_id', type: 'varchar', length: 128, nullable: true })
|
|
requestId!: string | null;
|
|
}
|