import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, OneToMany } from 'typeorm';
import { BlogComment } from '../comments/entities/comment.entity';
import { BlogTranslation } from './blog-translation.entity';

@Entity('blogs') 
export class Blog {
  @PrimaryGeneratedColumn({ name: 'blog_id' })
  blogId: number;

  @Column({ name: 'is_published', default: false })
  isPublished: boolean;

  @Column({ type: 'simple-array', nullable: true })
  tags: string[];

  @Column({ name: 'featured_image_url', type: 'varchar', nullable: true })
  featuredImageUrl: string;

  @Column({ name: 'view_count', default: 0 })
  viewCount: number;

  @Column({ name: 'author_names', type: 'simple-array' })
  authorNames: string[];

  @Column({ name: 'slug', type: 'varchar', length: 255, unique:true })
  slug: string;

  @OneToMany(() => BlogTranslation, translation => translation.blog, { cascade: true })
  translations: BlogTranslation[];

  @OneToMany(() => BlogComment, comment => comment.blogId, { cascade: true })
  blogComments: BlogComment[];

  @CreateDateColumn({ name: 'created_at' })
  createdAt: Date;

  @UpdateDateColumn({ name: 'updated_at' })
  updatedAt: Date;
}
