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;
|
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
|
-- 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
|
-- name: GetUserPasswordHash :one
|
||||||
SELECT password_hash FROM users WHERE id = $1;
|
SELECT password_hash FROM users WHERE id = $1;
|
||||||
|
|
||||||
-- name: ListUsers :many
|
-- 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
|
-- Library Types queries
|
||||||
-- name: GetLibraryTypes :many
|
-- name: GetLibraryTypes :many
|
||||||
@@ -317,11 +343,15 @@ SELECT COUNT(*) FROM devices WHERE user_id = $1;
|
|||||||
-- name: DeleteUser :exec
|
-- name: DeleteUser :exec
|
||||||
DELETE FROM users WHERE id = $1;
|
DELETE FROM users WHERE id = $1;
|
||||||
|
|
||||||
-- name: UpdateScanSettings :exec
|
-- System Settings queries
|
||||||
UPDATE users SET scan_frequency_minutes = $2, auto_scan_enabled = $3, updated_at = NOW() WHERE id = $1;
|
-- name: GetSystemSetting :one
|
||||||
|
SELECT setting_value FROM system_settings WHERE setting_key = $1;
|
||||||
|
|
||||||
-- name: GetScanSettings :one
|
-- name: UpdateSystemSetting :exec
|
||||||
SELECT scan_frequency_minutes, auto_scan_enabled FROM users WHERE id = $1;
|
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
|
-- name: CreateMediaRating :one
|
||||||
INSERT INTO media_ratings (media_item_id, user_id, rating)
|
INSERT INTO media_ratings (media_item_id, user_id, rating)
|
||||||
|
|||||||
Reference in New Issue
Block a user