-
Notifications
You must be signed in to change notification settings - Fork 61
/
ctrl.go
96 lines (82 loc) · 2.7 KB
/
ctrl.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
93
94
95
96
// SPDX-License-Identifier: AGPL-3.0-only
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, version 3.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>
package ctrl
import (
"github.com/uber-go/tally/v4"
"go.uber.org/zap"
"github.com/bangumi/server/internal/cache"
"github.com/bangumi/server/internal/dal"
"github.com/bangumi/server/internal/dam"
"github.com/bangumi/server/internal/domain"
"github.com/bangumi/server/internal/subject"
)
func New(
episode domain.EpisodeRepo,
cache cache.RedisCache,
subject subject.Repo,
person domain.PersonRepo,
character domain.CharacterRepo,
collection domain.CollectionRepo,
index domain.IndexRepo,
timeline domain.TimeLineRepo,
metric tally.Scope,
user domain.UserRepo,
topic domain.TopicRepo,
tx dal.Transaction,
dam dam.Dam,
log *zap.Logger,
) Ctrl {
return Ctrl{
log: log.Named("controller"),
cache: cache,
tx: tx,
dam: dam,
user: user,
topic: topic,
person: person,
episode: episode,
subject: subject,
character: character,
index: index,
collection: collection,
timeline: timeline,
metricUserQueryCount: metric.Counter("app_user_query_count"),
metricUserQueryCached: metric.Counter("app_user_query_cached_count"),
metricSubjectQueryCount: metric.Counter("app_subject_query_count"),
metricSubjectQueryCached: metric.Counter("app_subject_query_cached_count"),
metricsEpisodeQueryCount: metric.Counter("app_episode_query_count"),
metricsEpisodeQueryCached: metric.Counter("app_subject_query_cached_count"),
}
}
type Ctrl struct {
log *zap.Logger
cache cache.RedisCache
tx dal.Transaction
dam dam.Dam
user domain.UserRepo
topic domain.TopicRepo
person domain.PersonRepo
episode domain.EpisodeRepo
subject subject.Repo
character domain.CharacterRepo
collection domain.CollectionRepo
index domain.IndexRepo
timeline domain.TimeLineRepo
metricUserQueryCached tally.Counter
metricUserQueryCount tally.Counter
metricSubjectQueryCached tally.Counter
metricSubjectQueryCount tally.Counter
metricsEpisodeQueryCount tally.Counter
metricsEpisodeQueryCached tally.Counter
}