Add Redis caching for lookup data and admin cache management
- Add lookup-specific cache keys and methods to CacheService - Add cache refresh on lookup CRUD operations in AdminLookupHandler - Add Redis caching after seed-lookups in AdminSettingsHandler - Add ETag generation for seeded data to support client-side caching - Update task template handler with cache invalidation - Fix route for clear-cache endpoint 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -3,23 +3,23 @@
|
||||
-- Note: Run seed-lookups first to populate lookup tables
|
||||
|
||||
-- =====================================================
|
||||
-- TEST USERS (password is 'password123' for all users)
|
||||
-- bcrypt hash: $2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi
|
||||
-- TEST USERS (password is 'test1234' for all users)
|
||||
-- bcrypt hash: $2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK
|
||||
-- =====================================================
|
||||
INSERT INTO auth_user (id, username, password, email, first_name, last_name, is_active, is_staff, is_superuser, date_joined, last_login)
|
||||
VALUES
|
||||
(1, 'admin', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'admin@mycrib.com', 'Admin', 'User', true, true, true, NOW() - INTERVAL '1 year', NOW() - INTERVAL '1 hour'),
|
||||
(2, 'john.doe', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'john.doe@example.com', 'John', 'Doe', true, false, false, NOW() - INTERVAL '6 months', NOW() - INTERVAL '2 hours'),
|
||||
(3, 'jane.smith', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'jane.smith@example.com', 'Jane', 'Smith', true, false, false, NOW() - INTERVAL '5 months', NOW() - INTERVAL '1 day'),
|
||||
(4, 'bob.wilson', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'bob.wilson@example.com', 'Bob', 'Wilson', true, false, false, NOW() - INTERVAL '4 months', NOW() - INTERVAL '3 days'),
|
||||
(5, 'alice.johnson', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'alice.johnson@example.com', 'Alice', 'Johnson', true, false, false, NOW() - INTERVAL '3 months', NOW() - INTERVAL '1 week'),
|
||||
(6, 'charlie.brown', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'charlie.brown@example.com', 'Charlie', 'Brown', true, false, false, NOW() - INTERVAL '2 months', NOW() - INTERVAL '2 weeks'),
|
||||
(7, 'diana.ross', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'diana.ross@example.com', 'Diana', 'Ross', true, false, false, NOW() - INTERVAL '1 month', NULL),
|
||||
(8, 'edward.norton', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'edward.norton@example.com', 'Edward', 'Norton', true, false, false, NOW() - INTERVAL '2 weeks', NOW() - INTERVAL '5 days'),
|
||||
(9, 'fiona.apple', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'fiona.apple@example.com', 'Fiona', 'Apple', true, false, false, NOW() - INTERVAL '1 week', NOW()),
|
||||
(10, 'inactive.user', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'inactive@example.com', 'Inactive', 'User', false, false, false, NOW() - INTERVAL '1 year', NULL),
|
||||
(11, 'staff.member', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'staff@mycrib.com', 'Staff', 'Member', true, true, false, NOW() - INTERVAL '3 months', NOW() - INTERVAL '6 hours'),
|
||||
(12, 'george.harrison', '$2a$10$KB4rf2NNj0a80lwlwJhaFukE2/THJXbcGZMks7vR3zykyN4zkF6xi', 'george@example.com', 'George', 'Harrison', true, false, false, NOW() - INTERVAL '45 days', NOW() - INTERVAL '10 days')
|
||||
(1, 'admin', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'admin@mycrib.com', 'Admin', 'User', true, true, true, NOW() - INTERVAL '1 year', NOW() - INTERVAL '1 hour'),
|
||||
(2, 'john.doe', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'john.doe@example.com', 'John', 'Doe', true, false, false, NOW() - INTERVAL '6 months', NOW() - INTERVAL '2 hours'),
|
||||
(3, 'jane.smith', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'jane.smith@example.com', 'Jane', 'Smith', true, false, false, NOW() - INTERVAL '5 months', NOW() - INTERVAL '1 day'),
|
||||
(4, 'bob.wilson', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'bob.wilson@example.com', 'Bob', 'Wilson', true, false, false, NOW() - INTERVAL '4 months', NOW() - INTERVAL '3 days'),
|
||||
(5, 'alice.johnson', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'alice.johnson@example.com', 'Alice', 'Johnson', true, false, false, NOW() - INTERVAL '3 months', NOW() - INTERVAL '1 week'),
|
||||
(6, 'charlie.brown', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'charlie.brown@example.com', 'Charlie', 'Brown', true, false, false, NOW() - INTERVAL '2 months', NOW() - INTERVAL '2 weeks'),
|
||||
(7, 'diana.ross', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'diana.ross@example.com', 'Diana', 'Ross', true, false, false, NOW() - INTERVAL '1 month', NULL),
|
||||
(8, 'edward.norton', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'edward.norton@example.com', 'Edward', 'Norton', true, false, false, NOW() - INTERVAL '2 weeks', NOW() - INTERVAL '5 days'),
|
||||
(9, 'fiona.apple', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'fiona.apple@example.com', 'Fiona', 'Apple', true, false, false, NOW() - INTERVAL '1 week', NOW()),
|
||||
(10, 'inactive.user', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'inactive@example.com', 'Inactive', 'User', false, false, false, NOW() - INTERVAL '1 year', NULL),
|
||||
(11, 'staff.member', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'staff@mycrib.com', 'Staff', 'Member', true, true, false, NOW() - INTERVAL '3 months', NOW() - INTERVAL '6 hours'),
|
||||
(12, 'george.harrison', '$2a$10$GOwh8Qy3Djnp4Pjx3smC9OWBJKX0obXCVcKTLVupLcwACfz8qozfK', 'george@example.com', 'George', 'Harrison', true, false, false, NOW() - INTERVAL '45 days', NOW() - INTERVAL '10 days')
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
username = EXCLUDED.username, password = EXCLUDED.password, email = EXCLUDED.email,
|
||||
first_name = EXCLUDED.first_name, last_name = EXCLUDED.last_name, is_active = EXCLUDED.is_active,
|
||||
|
||||
Reference in New Issue
Block a user