-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapplication_ctx.go
More file actions
35 lines (30 loc) · 819 Bytes
/
application_ctx.go
File metadata and controls
35 lines (30 loc) · 819 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package app
type AppCtx struct {
Accounts AccountGateway
AuthorizeService AuthorizeService
Transfers TransferGateway
TransferService TransferService
Users UserGateway
Queue Queue
Database *Database
}
func NewAppCtx() AppCtx {
// Persistance
database := NewDatabase()
accounts := NewAccountGateway(database)
users := NewUserGateway(database)
transfers := NewTransferGateway(database)
// Background processing
queue := NewQueue()
// Logic
authService := NewAuthorizeService(users)
transferService := NewTransferService(accounts, transfers, queue)
return AppCtx{
Accounts: accounts,
AuthorizeService: authService,
Transfers: transfers,
TransferService: transferService,
Users: users,
Queue: queue,
}
}