我需要为我的应用程序设置记录版本控制并批准更改模式。 现在我有两个相同的实体。 当用户更改某些数据时,它将被添加到第一个实体中。 管理员批准更改后,数据将复制到第二个(主)实体。 这种做法似乎不太正确。我正在考虑使用 @VersionColumn 并且管理员只会设置活动版本。我正在考虑如何实施它。 也许您有其他解决方案,请告诉我如何实施。
我目前正在考虑与这种实体创建 OneToOne 关系
@Entity({ name: 'version' })
export class VersionEntity {
@PrimaryGeneratedColumn() // may be this is wrong decorator for this purpose
id: number;
@Column()
activeVersion: number;
}
它将包含实体的id(添加新版本时不变)和活动版本id
问题是这个 VesionEntity 表中的记录应该以某种方式出现,但我不知道正确的方法是什么。
附注我正在使用 postgres 如果有帮助的话
您可以使用一个包含所有数据版本以及指示数据是否已批准的状态的单个实体,而不是使用两个单独的实体来存储未批准和已批准的数据。试试这个
@Entity()
export class VersionedEntity {
@PrimaryGeneratedColumn()
id: number;
@VersionColumn()
version: number;
@Column()
data: string; // Your data fields here
@Column({ default: 'PENDING' })
status: 'PENDING' | 'APPROVED';
// Relationship to self to indicate the active approved version
@OneToOne(() => VersionedEntity)
@JoinColumn()
activeVersion: VersionedEntity;
}