import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, OneToMany } from 'typeorm';
import { UserRole } from '../../../common/enums';
import { Payment } from 'src/modules/payments/entities/prompt.entity';
import { Character } from 'src/modules/characters/entities/character.entity';
import { Image } from 'src/modules/images/entities/image.entity';
import { Service } from 'src/modules/services/entities/service.entity';
import { Video } from 'src/modules/videos/entities/video.entity';
import { Prompt } from 'src/modules/prompts/entities/prompt.entity';

@Entity('users')
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ unique: true })
  email: string;

  @Column()
  password: string;

  @Column()
  username: string;

  @Column({ type: 'enum', enum: UserRole, default: UserRole.USER })
  role: UserRole;

  @CreateDateColumn()
  created_at: Date;

  @OneToMany(() => Prompt, (prompt) => prompt.user)
  prompts: Prompt[];

  @OneToMany(() => Character, (character) => character.user)
  characters: Character[];

  @OneToMany(() => Image, (image) => image.user)
  images: Image[];

  @OneToMany(() => Video, (video) => video.user)
  videos: Video[];

  @OneToMany(() => Service, (service) => service.user)
  services: Service[];

  @OneToMany(() => Payment, (payment) => payment.user)
  payments: Payment[];
}
