snowballtools-base/packages/backend/src/entity/Domain.ts

60 lines
1.1 KiB
TypeScript

import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
DeleteDateColumn
} from 'typeorm';
import { Project } from './Project';
export enum Status {
Live = 'Live',
Pending = 'Pending',
}
@Entity()
export class Domain {
@PrimaryGeneratedColumn('uuid')
id!: string;
@Column('varchar')
projectId!: string;
@ManyToOne(() => Project, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'projectId' })
project!: Project;
@Column('varchar', { length: 255, default: 'main' })
branch!: string;
@Column('varchar', { length: 255 })
name!: string;
@Column('string', { nullable: true })
redirectToId!: string | null;
@ManyToOne(() => Domain)
@JoinColumn({ name: 'redirectToId' })
// eslint-disable-next-line no-use-before-define
redirectTo!: Domain | null;
@Column({
enum: Status,
default: Status.Pending
})
status!: Status;
@CreateDateColumn()
createdAt!: Date;
@UpdateDateColumn()
updatedAt!: Date;
@DeleteDateColumn()
deletedAt!: Date | null;
}