strapi/packages/core/database/lib/entity-repository.js

110 lines
2.2 KiB
JavaScript
Raw Normal View History

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-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-07-01 14:32:50 +02:00
// TODO: add relation API
2021-06-17 16:17:15 +02:00
populate() {},
2021-07-07 18:04:39 +02:00
load(id, field, params) {
return db.entityManager.load(uid, id, field, params);
},
2021-07-01 14:32:50 +02:00
};
};
2021-06-17 16:17:15 +02:00
module.exports = {
createRepository,
};