import { Entity, Column, PrimaryGeneratedColumn, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, Unique } from 'typeorm';
import { v4 as uuidv4 } from 'uuid';
import { Exclude } from 'class-transformer';
import { Categories } from './categories.entity';

@Entity({ name: 'category_translations' })
export class CategoryTranslation {
    @PrimaryGeneratedColumn('uuid')
    id: string;

    @ManyToOne(() => Categories, { onDelete: 'CASCADE' })
    @JoinColumn({ name: 'category_id' })
    category: Categories;

    @Index()
    @Column({ name: 'language_code', length: 10, default: 'en' })
    language_code: string;

    @Index()
    @Column({ default: "" })
    title: string;

    @Index()
    @Column({ default: "" })
    display_title: string;

    @Index()
    @Column({ default: "" })
    slug: string;

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

    @Column({ type: 'text', nullable: true })
    tags: string;

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

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

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

    setDefaults() {
        this.id = this.id || uuidv4();
    }
}

