31 lines
753 B
JavaScript
31 lines
753 B
JavaScript
export const UserServiceProvider = (function () {
|
|
let instance;
|
|
|
|
async function createInstance(user) {
|
|
switch (user.role) {
|
|
case 'STUDENT':
|
|
const studentService = await import('./student');
|
|
if (studentService) {
|
|
return new studentService.default(user);
|
|
}
|
|
break;
|
|
case 'PROFESSOR':
|
|
const professorService = await import('./professor');
|
|
if (professorService) {
|
|
return new professorService.default(user);
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error('Invalid Role!');
|
|
}
|
|
}
|
|
|
|
return {
|
|
getInstance: async function (user) {
|
|
if (!instance) {
|
|
instance = await createInstance(user);
|
|
}
|
|
return instance;
|
|
},
|
|
};
|
|
})();
|