diff options
author | Leonardo Murça <106257713+leomurca@users.noreply.github.com> | 2023-02-07 20:40:41 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-07 20:40:41 -0300 |
commit | 8eca8b79ce4bfc40f8416309cbcfe397ed935ec4 (patch) | |
tree | ca4152122b67605e76f7a53ed1a14402255b23aa /src/services/provider.js | |
parent | e3de3c8e5fe06f7d14b2dc99a8b6aadc3b9bf18a (diff) | |
parent | c1f1286c86a47b87abcca55cbd0177d2a9c92fcd (diff) |
Feature/professor classroom
Diffstat (limited to 'src/services/provider.js')
-rw-r--r-- | src/services/provider.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/services/provider.js b/src/services/provider.js new file mode 100644 index 0000000..038bf5c --- /dev/null +++ b/src/services/provider.js @@ -0,0 +1,31 @@ +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; + }, + }; +})(); |