CentralBackend/services/pool/PoolMemberService.js

47 lines
1.2 KiB
JavaScript

const UnitOfWork = require('../../database/UnitOfWork');
const PoolMemberRepository = require('../../repositories/pool/poolMemberRepository');
async function listMembers(poolId) {
const uow = new UnitOfWork();
try {
await uow.start();
const repo = new PoolMemberRepository(uow);
const members = await repo.listMembers(poolId);
await uow.commit();
return members;
} catch (err) {
try { await uow.rollback(err); } catch (_) {}
throw err;
}
}
async function addMembers(poolId, userIds, actorUserId) {
const uow = new UnitOfWork();
try {
await uow.start();
const repo = new PoolMemberRepository(uow);
await repo.addMembers(poolId, userIds, actorUserId);
await uow.commit();
return true;
} catch (err) {
try { await uow.rollback(err); } catch (_) {}
throw err;
}
}
async function removeMembers(poolId, userIds, actorUserId) {
const uow = new UnitOfWork();
try {
await uow.start();
const repo = new PoolMemberRepository(uow);
const removed = await repo.removeMembers(poolId, userIds, actorUserId);
await uow.commit();
return removed;
} catch (err) {
try { await uow.rollback(err); } catch (_) {}
throw err;
}
}
module.exports = { listMembers, addMembers, removeMembers };