import { BlogPost, BlogPostCategory, BlogPostStatus } from '@domain/entities/blog-post.entity';

export const BLOG_POST_REPOSITORY = 'BlogPostRepository';

export interface BlogPostFilters {
  status?: BlogPostStatus;
  category?: BlogPostCategory;
  search?: string;
  isFeatured?: boolean;
  limit?: number;
  offset?: number;
}

export interface BlogPostRepository {
  save(post: BlogPost): Promise<BlogPost>;
  findById(id: string): Promise<BlogPost | null>;
  findBySlug(slug: string): Promise<BlogPost | null>;
  findByFilters(filters: BlogPostFilters): Promise<BlogPost[]>;
  count(filters: BlogPostFilters): Promise<number>;
  delete(id: string): Promise<void>;
  slugExists(slug: string, excludeId?: string): Promise<boolean>;
}
