1
- import { QueryParams , EditableEntity } from '@devmx/shared-api-interfaces' ;
2
1
import { Query , RootFilterQuery , SortOrder } from 'mongoose' ;
3
2
import { EventsService } from '@devmx/event-domain/server' ;
4
3
import { getModelToken } from '@nestjs/mongoose' ;
5
4
import { EventCollection } from '../schemas' ;
5
+ import {
6
+ QueryParams ,
7
+ EditableEntity ,
8
+ QueryParamsDateRange ,
9
+ } from '@devmx/shared-api-interfaces' ;
6
10
import {
7
11
objectId ,
8
12
MongoService ,
@@ -13,28 +17,30 @@ export class EventsMongoServiceImpl
13
17
extends MongoService < EventCollection >
14
18
implements EventsService
15
19
{
16
- async findMyEvents ( params : QueryParams < EventCollection > ) {
17
- const { page = 0 , size = 10 , filter , sort } = params ;
20
+ async findDateRange ( params : QueryParamsDateRange < EventCollection > ) {
21
+ const { page = 0 , size = 10 , start , end } = params ;
18
22
19
23
const skip = page * size ;
20
- const where = this . applyFilter ( filter ?? { } ) ;
21
- const order = this . applySort ( sort ?? { } ) ;
24
+ const filter = this . applyFilter ( params . filter ?? { } ) ;
25
+ const sort = this . applySort ( params . sort ?? { } ) ;
22
26
23
- const { owner = '' } = filter ?? { } ;
27
+ const where = { ... filter , date : { $gte : start , $lte : end } } ;
24
28
25
- const query = this . entityModel
26
- . find ( { leaders : { $in : [ objectId ( String ( owner ) ) ] } } )
27
- . sort ( order )
28
- . skip ( skip )
29
- . limit ( size ) ;
29
+ return this . findByWhere ( where , sort , skip , size ) ;
30
+ }
30
31
31
- const entities = await this . applyPopulate ( query ) . exec ( ) ;
32
+ async findMyEvents ( params : QueryParams < EventCollection > ) {
33
+ const { page = 0 , size = 10 } = params ;
32
34
33
- const data = entities . map ( ( item ) => item . toJSON ( ) ) ;
34
- const items = await this . entityModel . countDocuments ( where ) . exec ( ) ;
35
- const pages = Math . ceil ( items / size ) ;
35
+ const skip = page * size ;
36
+ const filter = this . applyFilter ( params . filter ?? { } ) ;
37
+ const sort = this . applySort ( params . sort ?? { } ) ;
36
38
37
- return { data, items, pages } ;
39
+ const { owner = '' } = params . filter ?? { } ;
40
+
41
+ const where = { ...filter , leaders : { $in : [ objectId ( String ( owner ) ) ] } } ;
42
+
43
+ return this . findByWhere ( where , sort , skip , size ) ;
38
44
}
39
45
40
46
async findFrom ( date : Date , params : QueryParams < EventCollection > ) {
0 commit comments