@@ -60,7 +60,63 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
6060 const findAll = this . _repository . find ( find ) ;
6161
6262 if ( options ?. withDeleted ) {
63- findAll . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( true ) ;
63+ findAll . or ( [
64+ {
65+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : false } ,
66+ } ,
67+ {
68+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : true } ,
69+ } ,
70+ ] ) ;
71+ } else {
72+ findAll . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( false ) ;
73+ }
74+
75+ if ( options ?. select ) {
76+ findAll . select ( options . select ) ;
77+ }
78+
79+ if ( options ?. paging ) {
80+ findAll . limit ( options . paging . limit ) . skip ( options . paging . offset ) ;
81+ }
82+
83+ if ( options ?. sort ) {
84+ findAll . sort (
85+ this . _convertSort ( options . sort ) as { [ key : string ] : SortOrder }
86+ ) ;
87+ }
88+
89+ if ( options ?. join ) {
90+ findAll . populate (
91+ typeof options . join === 'boolean'
92+ ? this . _joinOnFind
93+ : ( options . join as PopulateOptions | PopulateOptions [ ] )
94+ ) ;
95+ }
96+
97+ if ( options ?. session ) {
98+ findAll . session ( options . session ) ;
99+ }
100+
101+ return findAll . lean ( ) ;
102+ }
103+
104+ async findAllDistinct < Y = T > (
105+ fieldDistinct : string ,
106+ find ?: Record < string , any > | Record < string , any > [ ] ,
107+ options ?: IDatabaseFindAllOptions < ClientSession >
108+ ) : Promise < Y [ ] > {
109+ const findAll = this . _repository . distinct ( fieldDistinct , find ) ;
110+
111+ if ( options ?. withDeleted ) {
112+ findAll . or ( [
113+ {
114+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : false } ,
115+ } ,
116+ {
117+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : true } ,
118+ } ,
119+ ] ) ;
64120 } else {
65121 findAll . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( false ) ;
66122 }
@@ -101,7 +157,14 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
101157 const findOne = this . _repository . findOne ( find ) ;
102158
103159 if ( options ?. withDeleted ) {
104- findOne . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( true ) ;
160+ findOne . or ( [
161+ {
162+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : false } ,
163+ } ,
164+ {
165+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : true } ,
166+ } ,
167+ ] ) ;
105168 } else {
106169 findOne . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( false ) ;
107170 }
@@ -138,7 +201,14 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
138201 const findOne = this . _repository . findById ( _id ) ;
139202
140203 if ( options ?. withDeleted ) {
141- findOne . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( true ) ;
204+ findOne . or ( [
205+ {
206+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : false } ,
207+ } ,
208+ {
209+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : true } ,
210+ } ,
211+ ] ) ;
142212 } else {
143213 findOne . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( false ) ;
144214 }
@@ -175,7 +245,14 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
175245 const count = this . _repository . countDocuments ( find ) ;
176246
177247 if ( options ?. withDeleted ) {
178- count . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( true ) ;
248+ count . or ( [
249+ {
250+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : false } ,
251+ } ,
252+ {
253+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : true } ,
254+ } ,
255+ ] ) ;
179256 } else {
180257 count . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( false ) ;
181258 }
@@ -209,7 +286,14 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
209286 } ) ;
210287
211288 if ( options ?. withDeleted ) {
212- exist . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( true ) ;
289+ exist . or ( [
290+ {
291+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : false } ,
292+ } ,
293+ {
294+ [ DATABASE_DELETED_AT_FIELD_NAME ] : { $exists : true } ,
295+ } ,
296+ ] ) ;
213297 } else {
214298 exist . where ( DATABASE_DELETED_AT_FIELD_NAME ) . exists ( false ) ;
215299 }
@@ -508,14 +592,11 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
508592 _id : string [ ] ,
509593 options ?: IDatabaseManyOptions < ClientSession >
510594 ) : Promise < boolean > {
511- const del = this . _repository
512- . deleteMany ( {
513- _id : {
514- $in : _id . map ( ( val ) => new Types . ObjectId ( val ) ) ,
515- } ,
516- } )
517- . where ( DATABASE_DELETED_AT_FIELD_NAME )
518- . exists ( false ) ;
595+ const del = this . _repository . deleteMany ( {
596+ _id : {
597+ $in : _id . map ( ( val ) => new Types . ObjectId ( val ) ) ,
598+ } ,
599+ } ) ;
519600
520601 if ( options ?. session ) {
521602 del . session ( options . session ) ;
@@ -541,10 +622,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract<T>
541622 find : Record < string , any > | Record < string , any > [ ] ,
542623 options ?: IDatabaseManyOptions < ClientSession >
543624 ) : Promise < boolean > {
544- const del = this . _repository
545- . deleteMany ( find )
546- . where ( DATABASE_DELETED_AT_FIELD_NAME )
547- . exists ( false ) ;
625+ const del = this . _repository . deleteMany ( find ) ;
548626
549627 if ( options ?. session ) {
550628 del . session ( options . session ) ;
0 commit comments