"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.metadata=void 0;const db_1=require("@b/db"),query_1=require("@b/utils/query"),constants_1=require("@b/utils/constants"),utils_1=require("./utils"),error_1=require("@b/utils/error");exports.metadata={summary:"List all posts",operationId:"listPosts",tags:["Content","Author","Post"],parameters:[...constants_1.crudParameters],responses:{200:{description:"Posts retrieved successfully",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{type:"object",properties:utils_1.basePostSchema}},pagination:constants_1.paginationSchema}}}}},401:query_1.unauthorizedResponse,404:(0,query_1.notFoundMetadataResponse)("Posts"),500:query_1.serverErrorResponse},requiresAuth:!0};exports.default=async e=>{const{query:t,user:r,params:s}=e;if(!(null==r?void 0:r.id))throw(0,error_1.createError)({statusCode:401,message:"Unauthorized"});const o=await db_1.models.author.findOne({where:{userId:r.id}});if(!o)throw(0,error_1.createError)({statusCode:404,message:"Author not found"});return(0,query_1.getFiltered)({model:db_1.models.post,query:t,where:{authorId:o.id},sortField:t.sortField||"createdAt",includeModels:[{model:db_1.models.category,as:"category",attributes:["id","name","slug"]},{model:db_1.models.author,as:"author",includeModels:[{model:db_1.models.user,as:"user",attributes:["id","firstName","lastName","email","avatar"]}]}]})};