import { Entity, PrimaryGeneratedColumn, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn, Column, DeleteDateColumn } from "typeorm"
import { Campaign } from "./campaign.entity"
import { Users } from "./users.entity"
import { Draft } from "./draft.entity"

export enum DraftVersionStatus {
    APPROVED = "approved",
    PENDING = "pending",
    REJECTED = "rejected"
}

export enum DraftType {
    IMAGE = "image",
    VIDEO = "video"
}


@Entity("draft_versions")
export class DraftVersions {
    @PrimaryGeneratedColumn("uuid")
    id: string

    @ManyToOne(() => Draft, (draft) => draft.draftVersions, { onDelete: "CASCADE" })
    @JoinColumn({ name: "draft_id" })
    draft: Draft

    @Column({ nullable: true })
    draft_name: string;

    @Column({ type: "text", nullable: true })
    description: string;

    @Column({ nullable: true })
    thumbnail: string;

    @Column({ type: "enum", enum: DraftType, default: DraftType.IMAGE })
    type: DraftType

    @Column({ type: "enum", enum: DraftVersionStatus, default: DraftVersionStatus.PENDING })
    status: DraftVersionStatus

    @CreateDateColumn({
        type: 'timestamp',
        precision: 0,
        default: () => 'CURRENT_TIMESTAMP',
    })
    created_at: Date;

    @UpdateDateColumn({
        type: 'timestamp',
        precision: 0,
        default: () => 'CURRENT_TIMESTAMP',
        onUpdate: 'CURRENT_TIMESTAMP',
    })
    updated_at: Date;

    @DeleteDateColumn({ type: 'timestamp', nullable: true, precision: 0 })
    deleted_at: Date;
}
