@@ -70,12 +70,14 @@ export const createProject = async (req, res) => {
7070
7171export const getProjects = async ( req , res ) => {
7272
73+ let { page } = req . body ;
7374 let maxLimit = 5 ;
7475
7576 Project . find ( { draft : false } )
7677 . populate ( "author" , "personal_info.profile_img personal_info.username personal_info.fullname -_id" )
7778 . sort ( { "publishedAt" : - 1 } )
7879 . select ( "project_id title des banner tags activity publishedAt -_id" )
80+ . skip ( ( page - 1 ) * maxLimit )
7981 . limit ( maxLimit )
8082 . then ( projects => {
8183 return res . status ( 200 ) . json ( { projects } ) ;
@@ -98,4 +100,64 @@ export const trendingProjects = async (req, res) => {
98100 . catch ( err => {
99101 return res . status ( 500 ) . json ( { error : err . message } ) ;
100102 } )
103+ }
104+
105+ export const searchProjects = async ( req , res ) => {
106+
107+ let { tag, query, page } = req . body ;
108+
109+ let findQuery ;
110+
111+ if ( tag ) {
112+ findQuery = { tags : tag , draft : false } ;
113+ } else if ( query ) {
114+ findQuery = { draft : false , title : new RegExp ( query , 'i' ) } ;
115+ }
116+
117+ let maxLimit = 5 ;
118+
119+ Project . find ( findQuery )
120+ . populate ( "author" , "personal_info.profile_img personal_info.username personal_info.fullname -_id" )
121+ . sort ( { "publishedAt" : - 1 } )
122+ . select ( "project_id title des banner tags activity publishedAt -_id" )
123+ . skip ( ( page - 1 ) * maxLimit )
124+ . limit ( maxLimit )
125+ . then ( projects => {
126+ return res . status ( 200 ) . json ( { projects } ) ;
127+ } )
128+ . catch ( err => {
129+ return res . status ( 500 ) . json ( { error : err . message } ) ;
130+ } )
131+ }
132+
133+ export const allLatestProjectsCount = async ( req , res ) => {
134+
135+ Project . countDocuments ( { draft : false } )
136+ . then ( count => {
137+ return res . status ( 200 ) . json ( { totalDocs : count } ) ;
138+ } )
139+ . catch ( err => {
140+ return res . status ( 500 ) . json ( { error : err . message } ) ;
141+ } )
142+ }
143+
144+ export const searchProjectsCount = async ( req , res ) => {
145+
146+ let { tag, query } = req . body ;
147+
148+ let findQuery ;
149+
150+ if ( tag ) {
151+ findQuery = { tags : tag , draft : false } ;
152+ } else if ( query ) {
153+ findQuery = { draft : false , title : new RegExp ( query , 'i' ) } ;
154+ }
155+
156+ Project . countDocuments ( findQuery )
157+ . then ( count => {
158+ return res . status ( 200 ) . json ( { totalDocs : count } ) ;
159+ } )
160+ . catch ( err => {
161+ return res . status ( 500 ) . json ( { error : err . message } ) ;
162+ } )
101163}
0 commit comments