/
inject_application.go
92 lines (70 loc) · 2.87 KB
/
inject_application.go
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package wire
import (
authAdapters "github.com/boreq/eggplant/adapters/auth"
"github.com/boreq/eggplant/application"
"github.com/boreq/eggplant/application/auth"
"github.com/boreq/eggplant/application/music"
"github.com/boreq/eggplant/application/queries"
"github.com/google/wire"
bolt "go.etcd.io/bbolt"
)
//lint:ignore U1000 because
var appSet = wire.NewSet(
wire.Struct(new(application.Application), "*"),
wire.Struct(new(auth.Auth), "*"),
auth.NewRegisterInitialHandler,
auth.NewLoginHandler,
auth.NewLogoutHandler,
auth.NewCheckAccessTokenHandler,
auth.NewListHandler,
auth.NewCreateInvitationHandler,
auth.NewRegisterHandler,
auth.NewRemoveHandler,
auth.NewSetPasswordHandler,
wire.Struct(new(application.Music), "*"),
music.NewTrackHandler,
music.NewThumbnailHandler,
music.NewBrowseHandler,
music.NewSearchHandler,
wire.Struct(new(application.Queries), "*"),
queries.NewStatsHandler,
authAdapters.NewAuthTransactionProvider,
wire.Bind(new(auth.TransactionProvider), new(*authAdapters.AuthTransactionProvider)),
authAdapters.NewQueryTransactionProvider,
wire.Bind(new(queries.TransactionProvider), new(*authAdapters.QueryTransactionProvider)),
wire.Struct(new(auth.TransactableRepositories), "*"),
wire.Struct(new(queries.TransactableRepositories), "*"),
newQueryRepositoriesProvider,
wire.Bind(new(authAdapters.QueryRepositoriesProvider), new(*queryRepositoriesProvider)),
newAuthRepositoriesProvider,
wire.Bind(new(authAdapters.AuthRepositoriesProvider), new(*authRepositoriesProvider)),
wire.Bind(new(queries.UserRepository), new(*authAdapters.UserRepository)),
wire.Bind(new(auth.UserRepository), new(*authAdapters.UserRepository)),
authAdapters.NewUserRepository,
wire.Bind(new(auth.InvitationRepository), new(*authAdapters.InvitationRepository)),
authAdapters.NewInvitationRepository,
wire.Bind(new(auth.PasswordHasher), new(*authAdapters.BcryptPasswordHasher)),
authAdapters.NewBcryptPasswordHasher,
wire.Bind(new(auth.AccessTokenGenerator), new(*authAdapters.CryptoAccessTokenGenerator)),
authAdapters.NewCryptoAccessTokenGenerator,
authAdapters.NewCryptoStringGenerator,
wire.Bind(new(auth.CryptoStringGenerator), new(*authAdapters.CryptoStringGenerator)),
authAdapters.NewLastSeenUpdater,
wire.Bind(new(auth.LastSeenUpdater), new(*authAdapters.LastSeenUpdater)),
)
type authRepositoriesProvider struct {
}
func newAuthRepositoriesProvider() *authRepositoriesProvider {
return &authRepositoriesProvider{}
}
func (p *authRepositoriesProvider) Provide(tx *bolt.Tx) (*auth.TransactableRepositories, error) {
return BuildTransactableAuthRepositories(tx)
}
type queryRepositoriesProvider struct {
}
func newQueryRepositoriesProvider() *queryRepositoriesProvider {
return &queryRepositoriesProvider{}
}
func (p *queryRepositoriesProvider) Provide(tx *bolt.Tx) (*queries.TransactableRepositories, error) {
return BuildTransactableQueryRepositories(tx)
}