this repo has no description
1package state
2
3import (
4 "log/slog"
5
6 "tangled.org/core/appview/config"
7 "tangled.org/core/appview/db"
8 "tangled.org/core/appview/indexer"
9 "tangled.org/core/appview/issues"
10 "tangled.org/core/appview/mentions"
11 "tangled.org/core/appview/middleware"
12 "tangled.org/core/appview/notify"
13 "tangled.org/core/appview/oauth"
14 "tangled.org/core/appview/pages"
15 "tangled.org/core/appview/validator"
16 "tangled.org/core/idresolver"
17 "tangled.org/core/log"
18 "tangled.org/core/rbac"
19)
20
21// Expose exposes private fields in `State`. This is used to bridge between
22// legacy web routers and new architecture
23func (s *State) Expose() (
24 *config.Config,
25 *db.DB,
26 *rbac.Enforcer,
27 *idresolver.Resolver,
28 *mentions.Resolver,
29 *indexer.Indexer,
30 *slog.Logger,
31 notify.Notifier,
32 *oauth.OAuth,
33 *pages.Pages,
34 *validator.Validator,
35) {
36 return s.config, s.db, s.enforcer, s.idResolver, s.mentionsResolver, s.indexer, s.logger, s.notifier, s.oauth, s.pages, s.validator
37}
38
39func (s *State) ExposeIssue() *issues.Issues {
40 return issues.New(
41 s.oauth,
42 s.repoResolver,
43 s.enforcer,
44 s.pages,
45 s.idResolver,
46 s.mentionsResolver,
47 s.db,
48 s.config,
49 s.notifier,
50 s.validator,
51 s.indexer.Issues,
52 log.SubLogger(s.logger, "issues"),
53 )
54}
55
56func (s *State) Middleware() *middleware.Middleware {
57 mw := middleware.New(
58 s.oauth,
59 s.db,
60 s.enforcer,
61 s.repoResolver,
62 s.idResolver,
63 s.pages,
64 )
65 return &mw
66}