- PostLike domain entity (post_id, liked_by) with BaseEntity integration
- Post entity: add like_count field (default 0) and to_dict serialization
- PostRepository interface: add get_like, add_like, remove_like methods
- TogglePostLikeUseCase: toggle logic (like → unlike, unlike → like)
- PostResponseDTO/PostResponseSchema: add like_count field
- PostLikeORM model with FK to posts and cascade delete
- SQLAlchemyPostRepository: implement like query/add/remove with ORM mapping
- DI provider registration for TogglePostLikeUseCase
- API endpoint POST /api/v1/posts/{id}/like (auth required)
- Unit tests: PostLike entity, Post.like_count, TogglePostLikeUseCase (7 tests)
- API tests: POST /api/v1/posts/{id}/like (4 tests)
- Test model files: FEATURE_LIKES.md, TEST_MODEL.md updated
32 lines
783 B
Python
32 lines
783 B
Python
"""Application layer exports.
|
|
|
|
This module re-exports all application layer components including
|
|
DTOs, interfaces, and use cases for convenient importing.
|
|
"""
|
|
|
|
from app.application.dtos import CreatePostDTO, PostResponseDTO, UpdatePostDTO
|
|
from app.application.interfaces import TransactionManager
|
|
from app.application.use_cases import (
|
|
CreatePostUseCase,
|
|
DeletePostUseCase,
|
|
GetPostUseCase,
|
|
ListPostsUseCase,
|
|
PublishPostUseCase,
|
|
TogglePostLikeUseCase,
|
|
UpdatePostUseCase,
|
|
)
|
|
|
|
__all__ = [
|
|
"CreatePostDTO",
|
|
"UpdatePostDTO",
|
|
"PostResponseDTO",
|
|
"TransactionManager",
|
|
"CreatePostUseCase",
|
|
"GetPostUseCase",
|
|
"UpdatePostUseCase",
|
|
"DeletePostUseCase",
|
|
"ListPostsUseCase",
|
|
"PublishPostUseCase",
|
|
"TogglePostLikeUseCase",
|
|
]
|