Skip to content

Commit e8214e9

Browse files
committed
dbmem
1 parent 5d56c4d commit e8214e9

File tree

9 files changed

+53
-16
lines changed

9 files changed

+53
-16
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1144,7 +1144,7 @@ func (q *querier) DeleteOldProvisionerDaemons(ctx context.Context) error {
11441144
return q.db.DeleteOldProvisionerDaemons(ctx)
11451145
}
11461146

1147-
func (q *querier) DeleteOldReportGeneratorLogs(ctx context.Context, frequencyDays int32) error {
1147+
func (q *querier) DeleteOldReportGeneratorLogs(ctx context.Context, frequencyDays database.DeleteOldReportGeneratorLogsParams) error {
11481148
if err := q.authorizeContext(ctx, policy.ActionDelete, rbac.ResourceSystem); err != nil {
11491149
return err
11501150
}

coderd/database/dbmem/dbmem.go

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ type data struct {
156156
dbcryptKeys []database.DBCryptKey
157157
files []database.File
158158
externalAuthLinks []database.ExternalAuthLink
159+
reportGeneratorLogs []database.ReportGeneratorLog
159160
gitSSHKey []database.GitSSHKey
160161
groupMembers []database.GroupMemberTable
161162
groups []database.Group
@@ -1708,8 +1709,20 @@ func (q *FakeQuerier) DeleteOldProvisionerDaemons(_ context.Context) error {
17081709
return nil
17091710
}
17101711

1711-
func (q *FakeQuerier) DeleteOldReportGeneratorLogs(ctx context.Context, frequencyDays int32) error {
1712-
panic("not implemented")
1712+
func (q *FakeQuerier) DeleteOldReportGeneratorLogs(_ context.Context, params database.DeleteOldReportGeneratorLogsParams) error {
1713+
q.mutex.Lock()
1714+
defer q.mutex.Unlock()
1715+
1716+
now := dbtime.Now()
1717+
1718+
var validLogs []database.ReportGeneratorLog
1719+
for _, record := range q.reportGeneratorLogs {
1720+
if record.NotificationTemplateID != params.NotificationTemplateID || record.LastGeneratedAt.Before(now.Add(-time.Duration(params.FrequencyDays)*24*time.Hour)) {
1721+
validLogs = append(validLogs, record)
1722+
}
1723+
}
1724+
q.reportGeneratorLogs = validLogs
1725+
return nil
17131726
}
17141727

17151728
func (q *FakeQuerier) DeleteOldWorkspaceAgentLogs(_ context.Context, threshold time.Time) error {
@@ -9235,8 +9248,24 @@ func (q *FakeQuerier) UpsertProvisionerDaemon(_ context.Context, arg database.Up
92359248
return d, nil
92369249
}
92379250

9238-
func (q *FakeQuerier) UpsertReportGeneratorLog(ctx context.Context, arg database.UpsertReportGeneratorLogParams) error {
9239-
panic("not implemented")
9251+
func (q *FakeQuerier) UpsertReportGeneratorLog(_ context.Context, arg database.UpsertReportGeneratorLogParams) error {
9252+
err := validateDatabaseType(arg)
9253+
if err != nil {
9254+
return err
9255+
}
9256+
9257+
q.mutex.Lock()
9258+
defer q.mutex.Unlock()
9259+
9260+
for i, record := range q.reportGeneratorLogs {
9261+
if arg.NotificationTemplateID == record.NotificationTemplateID && arg.UserID == record.UserID {
9262+
q.reportGeneratorLogs[i].LastGeneratedAt = arg.LastGeneratedAt
9263+
return nil
9264+
}
9265+
}
9266+
9267+
q.reportGeneratorLogs = append(q.reportGeneratorLogs, database.ReportGeneratorLog(arg))
9268+
return nil
92409269
}
92419270

92429271
func (q *FakeQuerier) UpsertRuntimeConfig(_ context.Context, arg database.UpsertRuntimeConfigParams) error {

coderd/database/dbmetrics/dbmetrics.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/models.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 9 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/notifications.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,4 @@ WHERE report_generator_logs.user_id = EXCLUDED.user_id AND report_generator_logs
192192

193193
-- name: DeleteOldReportGeneratorLogs :exec
194194
-- Delete report generator logs that have been created at least a <frequency_days> +1h ago.
195-
DELETE FROM report_generator_logs WHERE last_generated_at < (NOW() - CONCAT(@frequency_days::int, ' days')::interval - INTERVAL '1 hour');
195+
DELETE FROM report_generator_logs WHERE last_generated_at < (NOW() - CONCAT(@frequency_days::int, ' days')::interval - INTERVAL '1 hour') AND notification_template_id = @notification_template_id;

coderd/notifications/reports/generator.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,10 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
194194
}
195195
}
196196

197-
err = db.DeleteOldReportGeneratorLogs(ctx, frequencyDays)
197+
err = db.DeleteOldReportGeneratorLogs(ctx, database.DeleteOldReportGeneratorLogsParams{
198+
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
199+
FrequencyDays: frequencyDays,
200+
})
198201
if err != nil {
199202
return xerrors.Errorf("unable to delete old report generator logs: %w", err)
200203
}

0 commit comments

Comments
 (0)