feature: add draft func
This commit is contained in:
@@ -13,6 +13,10 @@ pub fn config(cfg: &mut web::ServiceConfig) {
|
||||
.route(web::get().to(list_posts))
|
||||
.route(web::post().to(create_post)),
|
||||
)
|
||||
.service(
|
||||
web::resource("/posts/me")
|
||||
.route(web::get().to(list_my_posts)),
|
||||
)
|
||||
.service(
|
||||
web::resource("/posts/{id}")
|
||||
.route(web::get().to(get_post))
|
||||
@@ -47,6 +51,18 @@ async fn list_posts(
|
||||
Ok(HttpResponse::Ok().json(response))
|
||||
}
|
||||
|
||||
async fn list_my_posts(
|
||||
pool: web::Data<SqlitePool>,
|
||||
user: AuthenticatedUser,
|
||||
) -> Result<HttpResponse, AppError> {
|
||||
// Get all posts by this user (including drafts)
|
||||
let posts = PostRepository::find_by_author(&pool, &user.user_id).await?;
|
||||
|
||||
let response: Vec<PostResponse> = posts.into_iter().map(PostResponse::from).collect();
|
||||
|
||||
Ok(HttpResponse::Ok().json(response))
|
||||
}
|
||||
|
||||
async fn get_post(
|
||||
pool: web::Data<SqlitePool>,
|
||||
path: web::Path<String>,
|
||||
|
||||
@@ -46,6 +46,20 @@ impl PostRepository {
|
||||
.map_err(AppError::from)
|
||||
}
|
||||
|
||||
pub async fn find_by_author(pool: &SqlitePool, author_id: &str) -> Result<Vec<Post>, AppError> {
|
||||
sqlx::query_as::<_, Post>(
|
||||
r#"
|
||||
SELECT * FROM posts
|
||||
WHERE author_id = ? AND deleted_at IS NULL
|
||||
ORDER BY created_at DESC
|
||||
"#,
|
||||
)
|
||||
.bind(author_id)
|
||||
.fetch_all(pool)
|
||||
.await
|
||||
.map_err(AppError::from)
|
||||
}
|
||||
|
||||
pub async fn find_all(
|
||||
pool: &SqlitePool,
|
||||
limit: i32,
|
||||
|
||||
Reference in New Issue
Block a user