11import config from "@/config" ;
22import { logger } from "@/lib/winston" ;
33import Blog from "@/models/blog" ;
4+ import User from "@/models/user" ;
45import type { Request , Response } from "express" ;
56
7+ interface QueryType {
8+ status ?: "draft" | "published" ;
9+ }
10+
611const getAllBlogs = async ( req : Request , res : Response ) : Promise < void > => {
712 try {
13+ const userId = req . userId ;
814 const limit = parseInt ( req . query . limit as string ) || config . defaultResLimit ;
915 const offset =
1016 parseInt ( req . query . offset as string ) || config . defaultResOffset ;
1117 const total = await Blog . countDocuments ( ) ;
1218
13- const blogs = await Blog . find ( )
14- . select ( "-__v" )
19+ const user = await User . findById ( userId ) . select ( "role" ) . lean ( ) . exec ( ) ;
20+ const query : QueryType = { } ;
21+
22+ if ( user ?. role === "user" ) {
23+ query . status = "published" ;
24+ }
25+
26+ const blogs = await Blog . find ( query )
27+ . select ( "-banner.publicId -__v" )
28+ . populate ( "author" , "-createdAt -updatedAt -__v" )
1529 . limit ( limit )
1630 . skip ( offset )
31+ . sort ( { createdAt : - 1 } )
1732 . lean ( )
1833 . exec ( ) ;
1934
@@ -30,7 +45,7 @@ const getAllBlogs = async (req: Request, res: Response): Promise<void> => {
3045 error,
3146 } ) ;
3247
33- logger . error ( "Error while getting all users " , error ) ;
48+ logger . error ( "Error while fetching blogs " , error ) ;
3449 }
3550} ;
3651
0 commit comments