Passed
Push — main ( f6597a...58b626 )
by Yume
01:31 queued 12s
created

internal.kernel.GetAuth   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 0
dl 0
loc 2
rs 10
c 0
b 0
f 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
	GetAuth() controllers.AuthController
12
	GetJwt() controllers.JwtController
13
	GetOAuth() controllers.OAuthController
14
	GetDeck() controllers.DeckController
15
}
16
17
type kernel struct{}
18
19
func (k kernel) GetUser() controllers.UserController {
20
	return InitializeUser()
21
}
22
23
func (k kernel) GetAuth() controllers.AuthController {
24
	return InitializeAuth()
25
}
26
27
func (k kernel) GetJwt() controllers.JwtController {
28
	return InitializeJWT()
29
}
30
31
func (k kernel) GetOAuth() controllers.OAuthController {
32
	return InitializeOAuth()
33
}
34
35
func (k kernel) GetDeck() controllers.DeckController {
36
	return InitializeDeck()
37
}
38
39
var (
40
	k             *kernel   // kernel is the service container
41
	containerOnce sync.Once // containerOnce is used to ensure that the service container is only initialized once
42
)
43
44
// GetServiceContainer returns the service container
45
func GetServiceContainer() ServiceContainer {
46
	containerOnce.Do(func() {
47
		k = &kernel{}
48
	})
49
	return k
50
}
51