2021-06-17 16:17:15 +02:00
|
|
|
'use strict';
|
|
|
|
|
2021-07-05 21:20:24 +02:00
|
|
|
const withDefaultPagination = params => {
|
|
|
|
const { page = 1, pageSize = 100, ...rest } = params;
|
|
|
|
|
|
|
|
return {
|
|
|
|
page: parseInt(page),
|
|
|
|
pageSize: parseInt(pageSize),
|
|
|
|
...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-01 14:32:50 +02:00
|
|
|
// TODO: add relation API
|
|
|
|
|
2021-06-17 16:17:15 +02:00
|
|
|
populate() {},
|
|
|
|
load() {},
|
2021-07-01 14:32:50 +02:00
|
|
|
};
|
|
|
|
};
|
2021-06-17 16:17:15 +02:00
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
createRepository,
|
|
|
|
};
|