Total Lines | 39 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | package internal |
||
2 | |||
3 | import ( |
||
4 | "sync" |
||
5 | |||
6 | "github.com/memnix/memnix-rest/app/http/controllers" |
||
7 | ) |
||
8 | |||
9 | type ServiceContainer interface { |
||
10 | GetUser() controllers.UserController |
||
11 | GetKliento() controllers.KlientoController |
||
12 | GetAuth() controllers.AuthController |
||
13 | } |
||
14 | |||
15 | type kernel struct{} |
||
16 | |||
17 | func (k kernel) GetUser() controllers.UserController { |
||
18 | return InitializeUser() |
||
19 | } |
||
20 | |||
21 | func (k kernel) GetKliento() controllers.KlientoController { |
||
22 | return InitializeKliento() |
||
23 | } |
||
24 | |||
25 | func (k kernel) GetAuth() controllers.AuthController { |
||
26 | return InitializeAuth() |
||
27 | } |
||
28 | |||
29 | var ( |
||
30 | k *kernel // kernel is the service container |
||
31 | containerOnce sync.Once // containerOnce is used to ensure that the service container is only initialized once |
||
32 | ) |
||
33 | |||
34 | // GetServiceContainer returns the service container |
||
35 | func GetServiceContainer() ServiceContainer { |
||
36 | containerOnce.Do(func() { |
||
37 | k = &kernel{} |
||
38 | }) |
||
39 | return k |
||
40 | } |
||
41 |