Skip to content

Commit f7ab39d

Browse files
committed
Fix: populate UpdatedAt
1 parent d71ba7f commit f7ab39d

File tree

9 files changed

+34
-14
lines changed

9 files changed

+34
-14
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2099,7 +2099,7 @@ func (q *querier) UpdateGroupByID(ctx context.Context, arg database.UpdateGroupB
20992099
return updateWithReturn(q.log, q.auth, fetch, q.db.UpdateGroupByID)(ctx, arg)
21002100
}
21012101

2102-
func (q *querier) UpdateInactiveUsersToDormant(ctx context.Context, lastSeenAfter time.Time) ([]database.UpdateInactiveUsersToDormantRow, error) {
2102+
func (q *querier) UpdateInactiveUsersToDormant(ctx context.Context, lastSeenAfter database.UpdateInactiveUsersToDormantParams) ([]database.UpdateInactiveUsersToDormantRow, error) {
21032103
if err := q.authorizeContext(ctx, rbac.ActionCreate, rbac.ResourceSystem); err != nil {
21042104
return nil, err
21052105
}

coderd/database/dbfake/dbfake.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4337,14 +4337,15 @@ func (q *FakeQuerier) UpdateGroupByID(_ context.Context, arg database.UpdateGrou
43374337
return database.Group{}, sql.ErrNoRows
43384338
}
43394339

4340-
func (q *FakeQuerier) UpdateInactiveUsersToDormant(_ context.Context, lastSeenAfter time.Time) ([]database.UpdateInactiveUsersToDormantRow, error) {
4340+
func (q *FakeQuerier) UpdateInactiveUsersToDormant(_ context.Context, params database.UpdateInactiveUsersToDormantParams) ([]database.UpdateInactiveUsersToDormantRow, error) {
43414341
q.mutex.Lock()
43424342
defer q.mutex.Unlock()
43434343

43444344
var updated []database.UpdateInactiveUsersToDormantRow
43454345
for index, user := range q.users {
4346-
if user.Status == database.UserStatusActive && user.LastSeenAt.Before(lastSeenAfter) {
4346+
if user.Status == database.UserStatusActive && user.LastSeenAt.Before(params.LastSeenAfter) {
43474347
q.users[index].Status = database.UserStatusDormant
4348+
q.users[index].UpdatedAt = params.UpdatedAt
43484349
updated = append(updated, database.UpdateInactiveUsersToDormantRow{
43494350
ID: user.ID,
43504351
Email: user.Email,

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/querier.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/queries.sql.go

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

coderd/database/queries/users.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,8 @@ RETURNING *;
256256
UPDATE
257257
users
258258
SET
259-
status = 'dormant'::user_status
259+
status = 'dormant'::user_status,
260+
updated_at = @updated_at
260261
WHERE
261262
last_seen_at < @last_seen_after :: timestamp
262263
AND status = 'active'::user_status

coderd/dormancy/dormantusersjob.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
)
1414

1515
const (
16-
jobInterval = 15 * time.Minute
16+
// Time interval between consecutive job runs
17+
jobInterval = 10 * time.Minute
18+
// User accounts inactive for `accountDormancyPeriod` will be marked as dormant
1719
accountDormancyPeriod = 90 * 24 * time.Hour
1820
)
1921

@@ -45,7 +47,10 @@ func CheckInactiveUsersWithOptions(ctx context.Context, logger slog.Logger, db d
4547
lastSeenAfter := database.Now().Add(-dormancyPeriod)
4648
logger.Debug(ctx, "check inactive user accounts", slog.F("dormancy_period", dormancyPeriod), slog.F("last_seen_after", lastSeenAfter))
4749

48-
updatedUsers, err := db.UpdateInactiveUsersToDormant(ctx, lastSeenAfter)
50+
updatedUsers, err := db.UpdateInactiveUsersToDormant(ctx, database.UpdateInactiveUsersToDormantParams{
51+
LastSeenAfter: lastSeenAfter,
52+
UpdatedAt: database.Now(),
53+
})
4954
if err != nil && !xerrors.Is(err, sql.ErrNoRows) {
5055
logger.Error(ctx, "can't mark inactive users as dormant", slog.Error(err))
5156
continue

coderd/dormancy/dormantusersjob_test.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func TestCheckInactiveUsers(t *testing.T) {
6767
return len(rows) == 9 && dormant == 3 && suspended == 3
6868
}, testutil.WaitShort, testutil.IntervalMedium)
6969

70-
allUsers := database.ConvertUserRows(rows)
70+
allUsers := ignoreUpdatedAt(database.ConvertUserRows(rows))
7171

7272
// Verify user status
7373
expectedUsers := []database.User{
@@ -101,3 +101,10 @@ func asDormant(user database.User) database.User {
101101
user.Status = database.UserStatusDormant
102102
return user
103103
}
104+
105+
func ignoreUpdatedAt(rows []database.User) []database.User {
106+
for i := range rows {
107+
rows[i].UpdatedAt = time.Time{}
108+
}
109+
return rows
110+
}

0 commit comments

Comments
 (0)