import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne } from 'typeorm';
import { User } from '../../users/entities/user.entity';
import { Character } from '../../characters/entities/character.entity';
import { VideoType } from '../../../common/enums';
import { Image } from '../../images/entities/image.entity';
import { Prompt } from 'src/modules/prompts/entities/prompt.entity';

@Entity('videos')
export class Video {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => User, (user) => user.videos, { nullable: false })
  user: User;

  @ManyToOne(() => Prompt, (prompt) => prompt.videos, { nullable: true })
  prompt: Prompt;

  @ManyToOne(() => Character, (character) => character.videos, { nullable: true })
  character: Character;

  @ManyToOne(() => Image, { nullable: true })
  source_image: Image;

  @ManyToOne(() => Video, { nullable: true })
  source_video: Video;

  @Column()
  video_url: string;

  @Column({ type: 'enum', enum: VideoType })
  type: VideoType;

  @CreateDateColumn()
  created_at: Date;
}
