44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { UserMetaEntity } from '@freeblox/shared';
|
|
import { Exclude } from 'class-transformer';
|
|
import {
|
|
Column,
|
|
Entity,
|
|
JoinColumn,
|
|
ManyToOne,
|
|
PrimaryGeneratedColumn,
|
|
} from 'typeorm';
|
|
import { ContentRelation } from '../../enums/content-relation.enum';
|
|
import { ContentEntity } from './content.entity';
|
|
|
|
/**
|
|
* Content-to-content relation.
|
|
*
|
|
* `secondContent` is `relation` of `firstContent`.
|
|
*/
|
|
@Entity('content_relation')
|
|
@Exclude()
|
|
export class ContentRelationEntity extends UserMetaEntity {
|
|
@PrimaryGeneratedColumn()
|
|
id: number;
|
|
|
|
@Column({ name: 'first_content_id' })
|
|
firstContentId: number;
|
|
|
|
@Column({ name: 'second_content_id' })
|
|
secondContentId: number;
|
|
|
|
@Column({ type: 'enum', enum: ContentRelation })
|
|
relation: ContentRelation;
|
|
|
|
@Column({ name: 'relation_name', nullable: true })
|
|
relationName?: string;
|
|
|
|
@ManyToOne(() => ContentEntity, { onDelete: 'CASCADE' })
|
|
@JoinColumn({ name: 'first_content_id' })
|
|
firstContent: ContentEntity;
|
|
|
|
@ManyToOne(() => ContentEntity, { onDelete: 'CASCADE' })
|
|
@JoinColumn({ name: 'second_content_id' })
|
|
secondContent: ContentEntity;
|
|
}
|