@sphereon/ssi-sdk.data-store
Version:
53 lines (46 loc) • 1.5 kB
text/typescript
import typeorm from 'typeorm'
const {
BaseEntity,
BeforeInsert,
BeforeUpdate,
CreateDateColumn,
Entity,
JoinColumn,
OneToMany,
OneToOne,
PrimaryGeneratedColumn,
TableInheritance,
UpdateDateColumn,
} = typeorm
import { typeOrmDateTime } from '@sphereon/ssi-sdk.agent-config'
import { PartyEntity } from './PartyEntity'
import { ContactMetadataItemEntity } from './ContactMetadataItemEntity'
('BaseContact')
({ column: { type: 'varchar', name: 'type' } })
export abstract class BaseContactEntity extends BaseEntity {
('uuid')
id!: string
({ name: 'created_at', nullable: false, type: typeOrmDateTime() })
createdAt!: Date
({ name: 'last_updated_at', nullable: false, type: typeOrmDateTime() })
lastUpdatedAt!: Date
(() => PartyEntity, (party: PartyEntity) => party.contact, {
onDelete: 'CASCADE',
})
({ name: 'party_id' })
party!: PartyEntity
(() => ContactMetadataItemEntity, (metadata: ContactMetadataItemEntity) => metadata.contact, {
cascade: true,
onDelete: 'CASCADE',
eager: true,
nullable: false,
})
({ name: 'metadata_id' })
metadata!: Array<ContactMetadataItemEntity>
// By default, @UpdateDateColumn in TypeORM updates the timestamp only when the entity's top-level properties change.
()
()
updateUpdatedDate(): void {
this.lastUpdatedAt = new Date()
}
}