Add timezone support to database schema and queries

- Add timezone column (VARCHAR(50) DEFAULT 'UTC') to users table
- Add default_timezone row to system_settings seed data
- Add idx_users_timezone index for user timezone lookups
- Add UpdateUserTimezone and GetSystemTimezone queries
- Regenerate sqlc code (models, querier, queries.sql.go)
- Reuse existing UpdateSystemSetting for system timezone updates
  instead of creating a redundant UpdateSystemTimezone query
This commit is contained in:
2026-04-27 21:30:37 -04:00
parent c3d900512c
commit 19701dc659
5 changed files with 40 additions and 2 deletions
+27 -1
View File
@@ -5408,6 +5408,17 @@ func (q *Queries) GetSystemSetting(ctx context.Context, settingKey string) (stri
return setting_value, err
}
const GetSystemTimezone = `-- name: GetSystemTimezone :one
SELECT setting_value FROM system_settings WHERE setting_key = 'default_timezone'
`
func (q *Queries) GetSystemTimezone(ctx context.Context) (string, error) {
row := q.db.QueryRow(ctx, GetSystemTimezone)
var setting_value string
err := row.Scan(&setting_value)
return setting_value, err
}
const GetUniversalProgress = `-- name: GetUniversalProgress :one
SELECT
rp.id,
@@ -10256,7 +10267,7 @@ func (q *Queries) UpdateUniversalProgress(ctx context.Context, arg UpdateUnivers
const UpdateUserMaxDevices = `-- name: UpdateUserMaxDevices :one
UPDATE users SET max_devices = $2, updated_at = NOW() WHERE id = $1
RETURNING id, email, username, password_hash, first_name, last_name, role, theme, max_devices, created_at, updated_at
RETURNING id, email, username, password_hash, first_name, last_name, role, theme, max_devices, created_at, timezone, updated_at
`
type UpdateUserMaxDevicesParams struct {
@@ -10278,6 +10289,7 @@ func (q *Queries) UpdateUserMaxDevices(ctx context.Context, arg UpdateUserMaxDev
&i.Theme,
&i.MaxDevices,
&i.CreatedAt,
&i.Timezone,
&i.UpdatedAt,
)
return i, err
@@ -10341,6 +10353,20 @@ func (q *Queries) UpdateUserTheme(ctx context.Context, arg UpdateUserThemeParams
return err
}
const UpdateUserTimezone = `-- name: UpdateUserTimezone :exec
UPDATE users SET timezone = $2, updated_at = NOW() WHERE id = $1
`
type UpdateUserTimezoneParams struct {
ID pgtype.UUID `db:"id" json:"id"`
Timezone pgtype.Text `db:"timezone" json:"timezone"`
}
func (q *Queries) UpdateUserTimezone(ctx context.Context, arg UpdateUserTimezoneParams) error {
_, err := q.db.Exec(ctx, UpdateUserTimezone, arg.ID, arg.Timezone)
return err
}
const UpdateUsername = `-- name: UpdateUsername :exec
UPDATE users SET username = $2, updated_at = NOW() WHERE id = $1
`