Skip to content

Commit 7240741

Browse files
refactor: core context has context and database
1 parent c0755b5 commit 7240741

File tree

10 files changed

+40
-45
lines changed

10 files changed

+40
-45
lines changed

internal/core/app.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ func NewApp(config *models.Config, bunDB *bun.DB, fileStore FileStore) App {
2525

2626
func (a App) newContext(ctx context.Context, actor Actor) Context {
2727
return Context{
28-
Bus: a.Bus,
29-
DB: a.DB,
30-
File: a.File,
31-
Config: a.Config,
32-
ctx: ctx,
33-
Actor: actor,
28+
Context: ctx,
29+
DB: a.DB,
30+
Bus: a.Bus,
31+
File: a.File,
32+
Config: a.Config,
33+
Actor: actor,
3434
}
3535
}
3636

internal/core/context.go

+2-6
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,10 @@ import (
88
)
99

1010
type Context struct {
11+
context.Context
12+
*bun.DB
1113
Actor Actor
1214
Bus *Bus
13-
DB *bun.DB
1415
File FileStore
1516
Config *models.Config
16-
ctx context.Context
17-
}
18-
19-
func (c Context) Context() context.Context {
20-
return c.ctx
2117
}

internal/db/endpoint.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,23 @@ import (
77

88
func EndpointGet(cc core.Context, id int64) (endpoints.Endpoint, error) {
99
var end endpoints.Endpoint
10-
err := cc.DB.NewSelect().Model(&end).Where("id = ?", id).Scan(cc.Context())
10+
err := cc.DB.NewSelect().Model(&end).Where("id = ?", id).Scan(cc)
1111
return end, err
1212
}
1313

1414
func EndpointList(cc core.Context) ([]endpoints.Endpoint, error) {
1515
var ends []endpoints.Endpoint
16-
err := cc.DB.NewSelect().Model(&ends).Scan(cc.Context())
16+
err := cc.DB.NewSelect().Model(&ends).Scan(cc)
1717
return ends, err
1818
}
1919

2020
func EndpointListByRule(cc core.Context, id int64) ([]endpoints.Endpoint, error) {
2121
var ends []endpoints.Endpoint
22-
err := cc.
23-
DB.
22+
err := cc.DB.
2423
NewSelect().
2524
Model(&ends).
2625
Join("JOIN rules_to_endpoints ON endpoint.id = rules_to_endpoints.endpoint_id").
2726
Where("rules_to_endpoints.rule_id = ?", id).
28-
Scan(cc.Context())
27+
Scan(cc)
2928
return ends, err
3029
}

internal/db/envelope.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ import (
1818
)
1919

2020
func EnvelopeDeleteAll(cc core.Context) error {
21-
_, err := cc.DB.NewDelete().Model(&envelope.Message{}).Where("1=1").Exec(cc.Context())
21+
_, err := cc.DB.NewDelete().Model(&envelope.Message{}).Where("1=1").Exec(cc)
2222
return err
2323
}
2424

2525
func EnvelopeDelete(cc core.Context, id int64) error {
26-
_, err := cc.DB.NewDelete().Model(&envelope.Message{}).Where("id = ?", id).Exec(cc.Context())
26+
_, err := cc.DB.NewDelete().Model(&envelope.Message{}).Where("id = ?", id).Exec(cc)
2727
return err
2828
}
2929

3030
func EnvelopeCreate(cc core.Context, msg *envelope.Message, atts []*envelope.Attachment) (int64, []int64, error) {
31-
err := cc.DB.RunInTx(cc.Context(), &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error {
31+
err := cc.DB.RunInTx(cc, &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error {
3232
_, err := tx.NewInsert().Model(msg).Exec(ctx)
3333
if err != nil {
3434
return err
@@ -74,7 +74,7 @@ func EnvelopeMessageList(cc core.Context, page pagination.Page, filter envelope.
7474
}
7575
}
7676

77-
ctx := cc.Context()
77+
ctx := cc
7878

7979
err := q.Scan(ctx, &msgs)
8080
if err != nil {
@@ -93,7 +93,7 @@ func EnvelopeMessageList(cc core.Context, page pagination.Page, filter envelope.
9393
}
9494

9595
func EnvelopeGet(cc core.Context, id int64) (envelope.Envelope, error) {
96-
ctx := cc.Context()
96+
ctx := cc
9797
msg := &envelope.Message{}
9898
err := cc.DB.NewSelect().Model(msg).Where("id = ?", id).Scan(ctx, msg)
9999
if err != nil {
@@ -117,16 +117,16 @@ func EnvelopeMessageHTMLGet(cc core.Context, id int64) (string, error) {
117117
err := Messages.
118118
SELECT(Messages.HTML).
119119
WHERE(Messages.ID.EQ(Int64(id))).
120-
QueryContext(cc.Context(), cc.DB, &res)
120+
QueryContext(cc, cc, &res)
121121
return res.HTML, err
122122
}
123123

124124
func EnvelopeCount(cc core.Context) (int, error) {
125-
return cc.DB.NewSelect().Model(&envelope.Message{}).Count(cc.Context())
125+
return cc.DB.NewSelect().Model(&envelope.Message{}).Count(cc)
126126
}
127127

128128
func EnvelopeAttachmentCount(cc core.Context) (int, error) {
129-
return cc.DB.NewSelect().Model(&envelope.Attachment{}).Where("message_id IS NOT NULL").Count(cc.Context())
129+
return cc.DB.NewSelect().Model(&envelope.Attachment{}).Where("message_id IS NOT NULL").Count(cc)
130130
}
131131

132132
func EnvelopeAttachmentList(cc core.Context, page pagination.Page, filter envelope.AttachmentFilter) (envelope.AttachmentListResult, error) {
@@ -140,7 +140,7 @@ func EnvelopeAttachmentList(cc core.Context, page pagination.Page, filter envelo
140140
q = q.Order("id DESC")
141141
}
142142

143-
ctx := cc.Context()
143+
ctx := cc
144144

145145
// Scan
146146
err := q.Scan(ctx, &atts)
@@ -162,7 +162,7 @@ func EnvelopeAttachmentList(cc core.Context, page pagination.Page, filter envelo
162162

163163
func EnvelopeAttachmentListOrphan(cc core.Context, limit int) ([]*envelope.Attachment, error) {
164164
var atts []*envelope.Attachment
165-
err := cc.DB.NewSelect().Model(&atts).Limit(limit).Where("message_id IS NULL").Scan(cc.Context())
165+
err := cc.DB.NewSelect().Model(&atts).Limit(limit).Where("message_id IS NULL").Scan(cc)
166166
return atts, err
167167
}
168168

@@ -173,7 +173,7 @@ func EnvelopeDeleteUntilCount(cc core.Context, keep int, olderThan time.Time) (i
173173
DELETE().
174174
WHERE(Messages.ID.NOT_IN(Messages.SELECT(Messages.ID).ORDER_BY(Messages.ID).LIMIT(int64(keep))).
175175
AND(Messages.CreatedAt.LT(DATETIME(olderThan))),
176-
).ExecContext(cc.Context(), cc.DB)
176+
).ExecContext(cc, cc.DB)
177177
if err != nil {
178178
return 0, err
179179
}
@@ -182,7 +182,7 @@ func EnvelopeDeleteUntilCount(cc core.Context, keep int, olderThan time.Time) (i
182182
}
183183

184184
func EnvelopeDeleteOlderThan(cc core.Context, olderThan time.Time) (int64, error) {
185-
res, err := Messages.DELETE().WHERE(Messages.CreatedAt.LT(DATETIME(olderThan))).ExecContext(cc.Context(), cc.DB)
185+
res, err := Messages.DELETE().WHERE(Messages.CreatedAt.LT(DATETIME(olderThan))).ExecContext(cc, cc.DB)
186186
if err != nil {
187187
return 0, err
188188
}
@@ -197,7 +197,7 @@ func EnvelopeAttachmentDelete(cc core.Context, att *envelope.Attachment) error {
197197
return err
198198
}
199199

200-
_, err = cc.DB.NewDelete().Model(&envelope.Attachment{}).Where("id = ?", att.ID).Exec(cc.Context())
200+
_, err = cc.DB.NewDelete().Model(&envelope.Attachment{}).Where("id = ?", att.ID).Exec(cc)
201201

202202
return err
203203
}

internal/db/internal.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func InternalRuleUpsert(cc core.Context, r rules.Rule, updatedAt time.Time) erro
3535
Rules.Name.SET(Rules.EXCLUDED.Name),
3636
Rules.Expression.SET(Rules.EXCLUDED.Expression),
3737
Rules.UpdatedAt.SET(Rules.EXCLUDED.UpdatedAt),
38-
)).ExecContext(cc.Context(), cc.DB)
38+
)).ExecContext(cc, cc)
3939

4040
return err
4141
}
@@ -75,7 +75,7 @@ func InternalEndpointUpsert(cc core.Context, r endpoints.Endpoint, updatedAt tim
7575
Endpoints.Kind.SET(Endpoints.EXCLUDED.Kind),
7676
Endpoints.Config.SET(Endpoints.EXCLUDED.Config),
7777
Endpoints.UpdatedAt.SET(Endpoints.EXCLUDED.UpdatedAt),
78-
)).ExecContext(cc.Context(), cc.DB)
78+
)).ExecContext(cc, cc)
7979

8080
return err
8181
}
@@ -86,7 +86,7 @@ func InternalRuleEndpointsUpsert(cc core.Context, ruleInternalID string, endpoin
8686
}
8787

8888
for _, endpointInternalID := range endpointInternalIDs {
89-
rows, err := cc.DB.ExecContext(cc.Context(), `
89+
rows, err := cc.DB.ExecContext(cc, `
9090
INSERT INTO rules_to_endpoints (
9191
internal,
9292
rule_id,
@@ -113,7 +113,7 @@ func InternalRuleEndpointsUpsert(cc core.Context, ruleInternalID string, endpoin
113113
}
114114

115115
func InternalDeleteOlderThan(cc core.Context, date time.Time) error {
116-
return cc.DB.RunInTx(cc.Context(), &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error {
116+
return cc.DB.RunInTx(cc, &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error {
117117
for _, table := range []string{"endpoints", "rules", "rules_to_endpoints"} {
118118
_, err := tx.NewDelete().Table(table).Where("updated_at < ?", date).Where("internal = true").Exec(ctx)
119119
if err != nil {

internal/db/rules.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import (
1111

1212
func RuleList(cc core.Context) ([]rules.Rule, error) {
1313
var rrules []rules.Rule
14-
err := cc.DB.NewSelect().Model(&rrules).Scan(cc.Context())
14+
err := cc.DB.NewSelect().Model(&rrules).Scan(cc)
1515
return rrules, err
1616
}
1717

1818
func RuleListEnable(cc core.Context) ([]rules.Rule, error) {
1919
var rrules []rules.Rule
20-
err := cc.DB.NewSelect().Model(&rrules).Where("enable = TRUE").Scan(cc.Context())
20+
err := cc.DB.NewSelect().Model(&rrules).Where("enable = TRUE").Scan(cc)
2121
return rrules, err
2222
}
2323

@@ -27,7 +27,7 @@ func RuleEndpointList(cc core.Context, ruleID int64) ([]rules.Endpoint, error) {
2727
ColumnExpr("id, name, (rule_id IS NOT NULL) AS enable").
2828
TableExpr("endpoints").
2929
Join("LEFT JOIN rules_to_endpoints ON endpoints.id=rules_to_endpoints.endpoint_id AND rules_to_endpoints.rule_id=?", ruleID).
30-
Scan(cc.Context(), &e)
30+
Scan(cc, &e)
3131

3232
return e, err
3333
}
@@ -36,7 +36,7 @@ func RuleIsInternal(cc core.Context, ruleID int64) (bool, error) {
3636
rows, err := Rules.
3737
SELECT(Rules.Internal).
3838
WHERE(Rules.ID.EQ(Int64(ruleID))).
39-
Rows(cc.Context(), cc.DB)
39+
Rows(cc, cc.DB)
4040
if err != nil {
4141
return false, err
4242
}
@@ -54,7 +54,7 @@ func RuleUpdate(cc core.Context, ruleID int64, enable bool) (rules.Rule, error)
5454
Set("enable = ?", enable).
5555
Where("id = ?", ruleID).
5656
Returning("id, internal, internal_id, name, expression, enable").
57-
Exec(cc.Context(), &rule)
57+
Exec(cc, &rule)
5858
if err != nil {
5959
return rule, err
6060
}

internal/endpoints/sender_telegram.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (t *Telegram) sendMessage(cc core.Context, text string) error {
9292
if err != nil {
9393
return err
9494
}
95-
req = req.WithContext(cc.Context())
95+
req = req.WithContext(cc)
9696
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
9797

9898
// Send request
@@ -152,7 +152,7 @@ func (t *Telegram) sendPhoto(cc core.Context, caption, name string, file *os.Fil
152152
if err != nil {
153153
return err
154154
}
155-
req = req.WithContext(cc.Context())
155+
req = req.WithContext(cc)
156156
req.Header.Set("Content-Type", writer.FormDataContentType())
157157

158158
// Send request

internal/procs/mailman.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func MailmanBackground(ctx context.Context, app core.App) {
2424
}
2525

2626
func mailman(cc core.Context, evtC <-chan core.EventEnvelopeCreated) {
27-
ctx := cc.Context()
27+
ctx := cc
2828

2929
for {
3030
select {

internal/procs/trimmer.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
func TrimStart(cc core.Context) error {
17-
ctx := cc.Context()
17+
ctx := cc
1818
select {
1919
case <-ctx.Done():
2020
return ctx.Err()
@@ -77,7 +77,7 @@ func trimmer(
7777
envDeletedC <-chan core.EventEnvelopeDeleted,
7878
evtTrimStart <-chan core.EventTrimStart,
7979
) {
80-
ctx := cc.Context()
80+
ctx := cc
8181
ticker := time.NewTicker(30 * time.Minute)
8282

8383
clean := func() {

internal/procs/vacuum.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func VacuumerBackground(ctx context.Context, app core.App) {
1313
}
1414

1515
func vacuum(cc core.Context) {
16-
ctx := cc.Context()
16+
ctx := cc
1717
ticker := time.NewTicker(24 * time.Hour)
1818

1919
run := func() {

0 commit comments

Comments
 (0)