···11 "tangled.sh/tangled.sh/core/jetstream"
12 "tangled.sh/tangled.sh/core/knotserver/config"
13 "tangled.sh/tangled.sh/core/knotserver/db"
014 "tangled.sh/tangled.sh/core/rbac"
15)
16···24 jc *jetstream.JetstreamClient
25 e *rbac.Enforcer
26 l *slog.Logger
02728 // init is a channel that is closed when the knot has been initailized
29 // i.e. when the first user (knot owner) has been added.
···31 knotInitialized bool
32}
3334-func Setup(ctx context.Context, c *config.Config, db *db.DB, e *rbac.Enforcer, jc *jetstream.JetstreamClient, l *slog.Logger) (http.Handler, error) {
35 r := chi.NewRouter()
3637 h := Handle{
···40 e: e,
41 l: l,
42 jc: jc,
043 init: make(chan struct{}),
44 }
45
···11 "tangled.sh/tangled.sh/core/jetstream"
12 "tangled.sh/tangled.sh/core/knotserver/config"
13 "tangled.sh/tangled.sh/core/knotserver/db"
14+ "tangled.sh/tangled.sh/core/knotserver/notifier"
15 "tangled.sh/tangled.sh/core/rbac"
16)
17···25 jc *jetstream.JetstreamClient
26 e *rbac.Enforcer
27 l *slog.Logger
28+ n *notifier.Notifier
2930 // init is a channel that is closed when the knot has been initailized
31 // i.e. when the first user (knot owner) has been added.
···33 knotInitialized bool
34}
3536+func Setup(ctx context.Context, c *config.Config, db *db.DB, e *rbac.Enforcer, jc *jetstream.JetstreamClient, l *slog.Logger, n *notifier.Notifier) (http.Handler, error) {
37 r := chi.NewRouter()
3839 h := Handle{
···42 e: e,
43 l: l,
44 jc: jc,
45+ n: n,
46 init: make(chan struct{}),
47 }
48
+5-2
knotserver/internal.go
···12 "github.com/go-chi/chi/v5/middleware"
13 "tangled.sh/tangled.sh/core/knotserver/config"
14 "tangled.sh/tangled.sh/core/knotserver/db"
015 "tangled.sh/tangled.sh/core/rbac"
16)
17···20 c *config.Config
21 e *rbac.Enforcer
22 l *slog.Logger
023}
2425func (h *InternalHandle) PushAllowed(w http.ResponseWriter, r *http.Request) {
···99 }
100101 for _, op := range ops {
102- err := h.db.InsertOp(op)
103 if err != nil {
104 l.Error("failed to insert op", "err", err, "op", op)
105 continue
···109 return
110}
111112-func Internal(ctx context.Context, c *config.Config, db *db.DB, e *rbac.Enforcer, l *slog.Logger) http.Handler {
113 r := chi.NewRouter()
114115 h := InternalHandle{
···117 c,
118 e,
119 l,
0120 }
121122 r.Get("/push-allowed", h.PushAllowed)
···12 "github.com/go-chi/chi/v5/middleware"
13 "tangled.sh/tangled.sh/core/knotserver/config"
14 "tangled.sh/tangled.sh/core/knotserver/db"
15+ "tangled.sh/tangled.sh/core/knotserver/notifier"
16 "tangled.sh/tangled.sh/core/rbac"
17)
18···21 c *config.Config
22 e *rbac.Enforcer
23 l *slog.Logger
24+ n *notifier.Notifier
25}
2627func (h *InternalHandle) PushAllowed(w http.ResponseWriter, r *http.Request) {
···101 }
102103 for _, op := range ops {
104+ err := h.db.InsertOp(op, h.n)
105 if err != nil {
106 l.Error("failed to insert op", "err", err, "op", op)
107 continue
···111 return
112}
113114+func Internal(ctx context.Context, c *config.Config, db *db.DB, e *rbac.Enforcer, l *slog.Logger, n *notifier.Notifier) http.Handler {
115 r := chi.NewRouter()
116117 h := InternalHandle{
···119 c,
120 e,
121 l,
122+ n,
123 }
124125 r.Get("/push-allowed", h.PushAllowed)