| 
									
										
										
										
											2021-06-17 16:17:15 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-05 21:20:24 +02:00
										 |  |  | const withDefaultPagination = params => { | 
					
						
							| 
									
										
										
										
											2021-07-08 18:15:32 +02:00
										 |  |  |   const { page = 1, pageSize = 10, ...rest } = params; | 
					
						
							| 
									
										
										
										
											2021-07-05 21:20:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   return { | 
					
						
							| 
									
										
										
										
											2021-07-08 18:15:32 +02:00
										 |  |  |     page: Number(page), | 
					
						
							|  |  |  |     pageSize: Number(pageSize), | 
					
						
							| 
									
										
										
										
											2021-07-05 21:20:24 +02:00
										 |  |  |     ...rest, | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-01 14:32:50 +02:00
										 |  |  | const createRepository = (uid, db) => { | 
					
						
							|  |  |  |   return { | 
					
						
							| 
									
										
										
										
											2021-06-17 16:17:15 +02:00
										 |  |  |     findOne(params) { | 
					
						
							|  |  |  |       return db.entityManager.findOne(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     findMany(params) { | 
					
						
							|  |  |  |       return db.entityManager.findMany(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     findWithCount(params) { | 
					
						
							| 
									
										
										
										
											2021-07-05 21:20:24 +02:00
										 |  |  |       return Promise.all([ | 
					
						
							|  |  |  |         db.entityManager.findMany(uid, params), | 
					
						
							|  |  |  |         db.entityManager.count(uid, params), | 
					
						
							|  |  |  |       ]); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async findPage(params) { | 
					
						
							|  |  |  |       const { page, pageSize, ...rest } = withDefaultPagination(params); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const offset = Math.max(page - 1, 0) * pageSize; | 
					
						
							|  |  |  |       const limit = pageSize; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const query = { | 
					
						
							|  |  |  |         ...rest, | 
					
						
							|  |  |  |         limit, | 
					
						
							|  |  |  |         offset, | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const [results, total] = await Promise.all([ | 
					
						
							|  |  |  |         db.entityManager.findMany(uid, query), | 
					
						
							|  |  |  |         db.entityManager.count(uid, query), | 
					
						
							|  |  |  |       ]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return { | 
					
						
							|  |  |  |         results, | 
					
						
							|  |  |  |         pagination: { | 
					
						
							|  |  |  |           page, | 
					
						
							|  |  |  |           pageSize, | 
					
						
							|  |  |  |           pageCount: Math.ceil(total / pageSize), | 
					
						
							|  |  |  |           total, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2021-06-17 16:17:15 +02:00
										 |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     create(params) { | 
					
						
							|  |  |  |       return db.entityManager.create(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     createMany(params) { | 
					
						
							|  |  |  |       return db.entityManager.createMany(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     update(params) { | 
					
						
							|  |  |  |       return db.entityManager.update(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     updateMany(params) { | 
					
						
							|  |  |  |       return db.entityManager.updateMany(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     delete(params) { | 
					
						
							|  |  |  |       return db.entityManager.delete(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     deleteMany(params) { | 
					
						
							|  |  |  |       return db.entityManager.deleteMany(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     count(params) { | 
					
						
							|  |  |  |       return db.entityManager.count(uid, params); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-06 14:18:03 +02:00
										 |  |  |     attachRelations(id, data) { | 
					
						
							|  |  |  |       return db.entityManager.attachRelations(uid, id, data); | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-07-07 18:04:39 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-06 14:18:03 +02:00
										 |  |  |     updateRelations(id, data) { | 
					
						
							|  |  |  |       return db.entityManager.updateRelations(uid, id, data); | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-07-07 18:04:39 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-06 14:18:03 +02:00
										 |  |  |     deleteRelations(id) { | 
					
						
							|  |  |  |       return db.entityManager.deleteRelations(uid, id); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-20 19:15:50 +02:00
										 |  |  |     populate(entity, populate) { | 
					
						
							|  |  |  |       return db.entityManager.populate(uid, entity, populate); | 
					
						
							| 
									
										
										
										
											2021-07-08 18:15:32 +02:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-07-01 14:32:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-08 18:15:32 +02:00
										 |  |  |     load(entity, field, params) { | 
					
						
							|  |  |  |       return db.entityManager.load(uid, entity, field, params); | 
					
						
							| 
									
										
										
										
											2021-07-07 18:04:39 +02:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-07-01 14:32:50 +02:00
										 |  |  |   }; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-06-17 16:17:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							|  |  |  |   createRepository, | 
					
						
							|  |  |  | }; |