tududi/backend/modules/shares/repository.js
Chris 542be2c1e9
Fix bug 366 (#764)
* Optimize DB

* Clean up names

* fixup! Clean up names

* fixup! fixup! Clean up names
2026-01-07 18:18:07 +02:00

61 lines
1.7 KiB
JavaScript

'use strict';
const { User, Permission, Project, Task, Note } = require('../../models');
class SharesRepository {
async findResourceOwner(resourceType, resourceUid) {
let resource = null;
if (resourceType === 'project') {
resource = await Project.findOne({
where: { uid: resourceUid },
attributes: ['user_id'],
raw: true,
});
} else if (resourceType === 'task') {
resource = await Task.findOne({
where: { uid: resourceUid },
attributes: ['user_id'],
raw: true,
});
} else if (resourceType === 'note') {
resource = await Note.findOne({
where: { uid: resourceUid },
attributes: ['user_id'],
raw: true,
});
}
return resource;
}
async findUserByEmail(email) {
return User.findOne({ where: { email } });
}
async findUserById(id, attributes = ['id', 'email', 'avatar_image']) {
return User.findByPk(id, { attributes });
}
async findUsersByIds(ids) {
return User.findAll({
where: { id: ids },
attributes: ['id', 'email', 'avatar_image'],
raw: true,
});
}
async findPermissions(resourceType, resourceUid) {
return Permission.findAll({
where: {
resource_type: resourceType,
resource_uid: resourceUid,
propagation: 'direct',
},
attributes: ['user_id', 'access_level', 'created_at'],
raw: true,
});
}
}
module.exports = new SharesRepository();