23 lines
738 B
TypeScript
23 lines
738 B
TypeScript
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>;
|
|
}
|