Passed
Push — main ( 9bf2de...8ffe1c )
by Yume
01:18
created

internal.*ServiceContainer.Mcq   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
dl 0
loc 2
rs 10
c 0
b 0
f 0
nop 0
1
package internal
2
3
import (
4
	"sync"
5
6
	"github.com/memnix/memnix-rest/app/http/controllers"
7
)
8
9
type ServiceContainer struct {
10
	user  controllers.UserController
11
	auth  controllers.AuthController
12
	jwt   controllers.JwtController
13
	oAuth controllers.OAuthController
14
	deck  controllers.DeckController
15
	card  controllers.CardController
16
	mcq   controllers.McqController
17
}
18
19
var (
20
	container *ServiceContainer
21
	once      sync.Once
22
)
23
24
func DefaultServiceContainer() *ServiceContainer {
25
	userController := InitializeUser()
26
	authController := InitializeAuth()
27
	jwtController := InitializeJWT()
28
	oAuthController := InitializeOAuth()
29
	deckController := InitializeDeck()
30
	cardController := InitializeCard()
31
	mcqController := InitializeMcq()
32
33
	return NewServiceContainer(userController, authController, jwtController, oAuthController, deckController, cardController, mcqController)
34
}
35
36
func NewServiceContainer(user controllers.UserController, auth controllers.AuthController, jwt controllers.JwtController, oAuth controllers.OAuthController, deck controllers.DeckController, card controllers.CardController, mcq controllers.McqController) *ServiceContainer {
37
	once.Do(func() {
38
		container = &ServiceContainer{
39
			user:  user,
40
			auth:  auth,
41
			jwt:   jwt,
42
			oAuth: oAuth,
43
			deck:  deck,
44
			card:  card,
45
			mcq:   mcq,
46
		}
47
	})
48
	return container
49
}
50
51
func (sc *ServiceContainer) User() controllers.UserController {
52
	return sc.user
53
}
54
55
func (sc *ServiceContainer) Auth() controllers.AuthController {
56
	return sc.auth
57
}
58
59
func (sc *ServiceContainer) Jwt() controllers.JwtController {
60
	return sc.jwt
61
}
62
63
func (sc *ServiceContainer) OAuth() controllers.OAuthController {
64
	return sc.oAuth
65
}
66
67
func (sc *ServiceContainer) Deck() controllers.DeckController {
68
	return sc.deck
69
}
70
71
func (sc *ServiceContainer) Card() controllers.CardController {
72
	return sc.card
73
}
74
75
func (sc *ServiceContainer) Mcq() controllers.McqController {
76
	return sc.mcq
77
}
78