internal/containers.go   A
last analyzed

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 21
dl 0
loc 39
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A internal.kernel.GetUser 0 2 1
A internal.GetServiceContainer 0 5 2
A internal.kernel.GetAuth 0 2 1
A internal.kernel.GetKliento 0 2 1
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