Skip to content

Commit 30b6adb

Browse files
authored
Empty update_at results in broker aging, set it at creation (#688)
1 parent 1ee6822 commit 30b6adb

9 files changed

Lines changed: 73 additions & 6 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
ALTER TABLE patron_request
2+
ALTER COLUMN updated_at DROP NOT NULL,
3+
ALTER COLUMN updated_at DROP DEFAULT;
4+
5+
ALTER TABLE scheduled_task
6+
ALTER COLUMN updated_at DROP NOT NULL,
7+
ALTER COLUMN updated_at DROP DEFAULT;
8+
9+
ALTER TABLE template
10+
ALTER COLUMN updated_at DROP NOT NULL,
11+
ALTER COLUMN updated_at DROP DEFAULT;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
UPDATE patron_request
2+
SET updated_at = created_at
3+
WHERE updated_at IS NULL;
4+
5+
ALTER TABLE patron_request
6+
ALTER COLUMN updated_at SET DEFAULT now(),
7+
ALTER COLUMN updated_at SET NOT NULL;
8+
9+
UPDATE scheduled_task
10+
SET updated_at = created_at
11+
WHERE updated_at IS NULL;
12+
13+
ALTER TABLE scheduled_task
14+
ALTER COLUMN updated_at SET DEFAULT now(),
15+
ALTER COLUMN updated_at SET NOT NULL;
16+
17+
UPDATE template
18+
SET updated_at = created_at
19+
WHERE updated_at IS NULL;
20+
21+
ALTER TABLE template
22+
ALTER COLUMN updated_at SET DEFAULT now(),
23+
ALTER COLUMN updated_at SET NOT NULL;

broker/patron_request/db/prrepo.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ func (r *PgPrRepo) UpdatePatronRequestInternalNote(ctx common.ExtendedContext, i
232232
})
233233
}
234234
func (r *PgPrRepo) CreatePatronRequest(ctx common.ExtendedContext, params CreatePatronRequestParams) (PatronRequest, error) {
235+
if !params.UpdatedAt.Valid {
236+
params.UpdatedAt = params.CreatedAt
237+
}
235238
row, err := r.queries.CreatePatronRequest(ctx, r.GetConnOrTx(), params)
236239
return row.PatronRequest, err
237240
}
@@ -322,6 +325,9 @@ func (r *PgPrRepo) DeleteItemById(ctx common.ExtendedContext, id string) error {
322325
}
323326

324327
func (r *PgPrRepo) SaveTemplate(ctx common.ExtendedContext, params SaveTemplateParams) (Template, error) {
328+
if !params.UpdatedAt.Valid {
329+
params.UpdatedAt = params.CreatedAt
330+
}
325331
row, err := r.queries.SaveTemplate(ctx, r.GetConnOrTx(), params)
326332
return row.Template, err
327333
}

broker/scheduler/db/repo.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ func CreateSchedRepo(dbPool *pgxpool.Pool) SchedRepo {
4747
}
4848

4949
func (r *PgSchedRepo) SaveScheduledTask(ctx common.ExtendedContext, params SaveScheduledTaskParams) (ScheduledTask, error) {
50+
if !params.UpdatedAt.Valid {
51+
params.UpdatedAt = params.CreatedAt
52+
}
5053
row, err := r.queries.SaveScheduledTask(ctx, r.GetConnOrTx(), params)
5154
if err == nil {
5255
r.notify(ctx)

broker/sqlc/pr_schema.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CREATE TABLE patron_request
1818
items JSONB NOT NULL DEFAULT '[]'::jsonb,
1919
language regconfig NOT NULL DEFAULT 'english',
2020
terminal_state BOOLEAN NOT NULL DEFAULT false,
21-
updated_at TIMESTAMP,
21+
updated_at TIMESTAMP NOT NULL DEFAULT now(),
2222
ill_response jsonb NOT NULL DEFAULT '{}'::jsonb,
2323
internal_note TEXT,
2424
next_req_id VARCHAR,
@@ -74,7 +74,7 @@ CREATE TABLE template
7474
labels TEXT[] NOT NULL DEFAULT '{}',
7575
audience VARCHAR,
7676
created_at TIMESTAMP NOT NULL DEFAULT now(),
77-
updated_at TIMESTAMP
77+
updated_at TIMESTAMP NOT NULL DEFAULT now()
7878
);
7979

8080
CREATE OR REPLACE FUNCTION immutable_to_timestamp(text)

broker/sqlc/sched_schema.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ CREATE TABLE scheduled_task
99
status TEXT NOT NULL DEFAULT 'pending',
1010
owner TEXT NOT NULL,
1111
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
12-
updated_at TIMESTAMPTZ,
12+
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
1313
FOREIGN KEY (event_name) REFERENCES event_config (event_name)
1414
);
1515

1616
CREATE INDEX idx_scheduled_task_run_at ON scheduled_task (run_at) WHERE status = 'pending' AND run_at IS NOT NULL;
1717

1818
CREATE INDEX idx_scheduled_task_id_owner ON scheduled_task (id, owner);
19-
CREATE INDEX idx_scheduled_task_owner ON scheduled_task (owner);
19+
CREATE INDEX idx_scheduled_task_owner ON scheduled_task (owner);

broker/test/patron_request/api/api-handler_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,9 @@ func TestCRUDTemplate(t *testing.T) {
14791479
assert.Equal(t, newTemplate.Labels, createdTemplate.Labels)
14801480
assert.Equal(t, newTemplate.Body, createdTemplate.Body)
14811481
assert.False(t, createdTemplate.CreatedAt.IsZero())
1482-
assert.Nil(t, createdTemplate.UpdatedAt)
1482+
if assert.NotNil(t, createdTemplate.UpdatedAt) {
1483+
assert.Equal(t, createdTemplate.CreatedAt, *createdTemplate.UpdatedAt)
1484+
}
14831485

14841486
templateId := createdTemplate.Id
14851487
thisTemplatePath := templatePath + "/" + templateId

broker/test/patron_request/db/prrepo_test.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func TestMain(m *testing.M) {
7171

7272
func TestItem(t *testing.T) {
7373
prId := uuid.NewString()
74-
_, err := prRepo.CreatePatronRequest(appCtx, pr_db.CreatePatronRequestParams{
74+
pr, err := prRepo.CreatePatronRequest(appCtx, pr_db.CreatePatronRequestParams{
7575
ID: prId,
7676
CreatedAt: pgtype.Timestamp{
7777
Time: time.Now(),
@@ -82,6 +82,8 @@ func TestItem(t *testing.T) {
8282
TerminalState: false,
8383
})
8484
assert.NoError(t, err)
85+
assert.True(t, pr.UpdatedAt.Valid)
86+
assert.Equal(t, pr.CreatedAt.Time, pr.UpdatedAt.Time)
8587

8688
// Save works
8789
itemId := uuid.NewString()
@@ -166,6 +168,24 @@ func TestItem(t *testing.T) {
166168
assert.NoError(t, err)
167169
}
168170

171+
func TestTemplateUpdatedAtInitializedFromCreatedAt(t *testing.T) {
172+
createdAt := pgtype.Timestamp{Time: time.Now(), Valid: true}
173+
template, err := prRepo.SaveTemplate(appCtx, pr_db.SaveTemplateParams{
174+
ID: uuid.NewString(),
175+
Owner: "ISIL:TEST",
176+
Title: "Test template",
177+
Purpose: "general",
178+
Body: "Body",
179+
ContentType: "text/plain",
180+
Labels: []string{},
181+
CreatedAt: createdAt,
182+
})
183+
184+
assert.NoError(t, err)
185+
assert.True(t, template.UpdatedAt.Valid)
186+
assert.Equal(t, template.CreatedAt.Time, template.UpdatedAt.Time)
187+
}
188+
169189
func TestNotification(t *testing.T) {
170190
prId := uuid.NewString()
171191
_, err := prRepo.CreatePatronRequest(appCtx, pr_db.CreatePatronRequestParams{

broker/test/scheduler/db/schedrepo_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ func TestSaveScheduledTask_Insert(t *testing.T) {
9797
assert.Equal(t, params.Schedule, saved.Schedule)
9898
assert.Equal(t, sched_db.ScheduledTaskStatusPending, saved.Status)
9999
assert.True(t, saved.CreatedAt.Valid)
100+
assert.True(t, saved.UpdatedAt.Valid)
101+
assert.Equal(t, saved.CreatedAt.Time, saved.UpdatedAt.Time)
100102

101103
stopTask(t, saved)
102104
}

0 commit comments

Comments
 (0)