feat(db): add system settings queries and enhance user queries
System Settings Migration: - Add GetSystemSetting query for single setting retrieval - Add UpdateSystemSetting query for updating settings - Add GetAllSystemSettings query for all settings - Remove UpdateScanSettings and GetScanSettings (per-user queries) User Query Enhancement: - Add max_devices field to GetUser query - Add device_count computed field to GetUser query - Add max_devices field to ListUsers query - Add device_count computed field to ListUsers query These changes support: 1. System-wide scan settings instead of per-user settings 2. Users can now see their device count and limits 3. Admins can monitor device usage across all users
This commit is contained in:
@@ -16,13 +16,39 @@ SELECT id, email, username, theme, first_name, last_name, role, created_at, upda
|
||||
SELECT id, email, username, password_hash, theme, first_name, last_name, role, created_at, updated_at FROM users WHERE email = $1 OR username = $1;
|
||||
|
||||
-- name: GetUser :one
|
||||
SELECT id, email, username, theme, first_name, last_name, role, created_at, updated_at FROM users WHERE id = $1;
|
||||
SELECT
|
||||
u.id,
|
||||
u.email,
|
||||
u.username,
|
||||
u.theme,
|
||||
u.first_name,
|
||||
u.last_name,
|
||||
u.role,
|
||||
u.max_devices,
|
||||
u.created_at,
|
||||
u.updated_at,
|
||||
(SELECT COUNT(*) FROM devices WHERE user_id = u.id) as device_count
|
||||
FROM users u
|
||||
WHERE u.id = $1;
|
||||
|
||||
-- name: GetUserPasswordHash :one
|
||||
SELECT password_hash FROM users WHERE id = $1;
|
||||
|
||||
-- name: ListUsers :many
|
||||
SELECT id, email, username, theme, first_name, last_name, role, created_at, updated_at FROM users ORDER BY created_at DESC;
|
||||
SELECT
|
||||
u.id,
|
||||
u.email,
|
||||
u.username,
|
||||
u.theme,
|
||||
u.first_name,
|
||||
u.last_name,
|
||||
u.role,
|
||||
u.max_devices,
|
||||
u.created_at,
|
||||
u.updated_at,
|
||||
(SELECT COUNT(*) FROM devices WHERE user_id = u.id) as device_count
|
||||
FROM users u
|
||||
ORDER BY u.created_at DESC;
|
||||
|
||||
-- Library Types queries
|
||||
-- name: GetLibraryTypes :many
|
||||
@@ -317,11 +343,15 @@ SELECT COUNT(*) FROM devices WHERE user_id = $1;
|
||||
-- name: DeleteUser :exec
|
||||
DELETE FROM users WHERE id = $1;
|
||||
|
||||
-- name: UpdateScanSettings :exec
|
||||
UPDATE users SET scan_frequency_minutes = $2, auto_scan_enabled = $3, updated_at = NOW() WHERE id = $1;
|
||||
-- System Settings queries
|
||||
-- name: GetSystemSetting :one
|
||||
SELECT setting_value FROM system_settings WHERE setting_key = $1;
|
||||
|
||||
-- name: GetScanSettings :one
|
||||
SELECT scan_frequency_minutes, auto_scan_enabled FROM users WHERE id = $1;
|
||||
-- name: UpdateSystemSetting :exec
|
||||
UPDATE system_settings SET setting_value = $2, updated_at = NOW() WHERE setting_key = $1;
|
||||
|
||||
-- name: GetAllSystemSettings :many
|
||||
SELECT setting_key, setting_value, description FROM system_settings ORDER BY setting_key;
|
||||
|
||||
-- name: CreateMediaRating :one
|
||||
INSERT INTO media_ratings (media_item_id, user_id, rating)
|
||||
|
||||
Reference in New Issue
Block a user