init_tests.sql 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. -- ARP Initial Data Bootstrap Script
  2. -- Run this script to set up initial permissions, roles, and an admin user
  3. --
  4. -- Note: The password hash below is for "secret123" using bcrypt.
  5. -- Permissions (no created_at/updated_at in model)
  6. INSERT INTO permissions (id, code, description) VALUES
  7. (1, 'user:create', 'Create users'),
  8. (2, 'user:read', 'Read users'),
  9. (3, 'user:update', 'Update users'),
  10. (4, 'user:delete', 'Delete users'),
  11. (5, 'role:create', 'Create roles'),
  12. (6, 'role:read', 'Read roles'),
  13. (7, 'role:update', 'Update roles'),
  14. (8, 'role:delete', 'Delete roles'),
  15. (9, 'permission:create', 'Create permissions'),
  16. (10, 'permission:read', 'Read permissions'),
  17. (11, 'permission:update', 'Update permissions'),
  18. (12, 'permission:delete', 'Delete permissions'),
  19. (13, 'service:create', 'Create services'),
  20. (14, 'service:read', 'Read services'),
  21. (15, 'service:update', 'Update services'),
  22. (16, 'service:delete', 'Delete services'),
  23. (17, 'task:create', 'Create tasks'),
  24. (18, 'task:read', 'Read tasks'),
  25. (19, 'task:update', 'Update tasks'),
  26. (20, 'task:delete', 'Delete tasks'),
  27. (21, 'note:create', 'Create notes'),
  28. (22, 'note:read', 'Read notes'),
  29. (23, 'note:update', 'Update notes'),
  30. (24, 'note:delete', 'Delete notes'),
  31. (25, 'channel:create', 'Create channels'),
  32. (26, 'channel:read', 'Read channels'),
  33. (27, 'channel:update', 'Update channels'),
  34. (28, 'channel:delete', 'Delete channels'),
  35. (29, 'message:create', 'Create messages'),
  36. (30, 'message:read', 'Read messages'),
  37. (31, 'message:update', 'Update messages'),
  38. (32, 'message:delete', 'Delete messages'),
  39. (33, 'taskstatus:create', 'Create task statuses'),
  40. (34, 'taskstatus:read', 'Read task statuses'),
  41. (35, 'taskstatus:update', 'Update task statuses'),
  42. (36, 'taskstatus:delete', 'Delete task statuses');
  43. -- Roles (no created_at/updated_at in model)
  44. INSERT INTO roles (id, name, description) VALUES
  45. (1, 'admin', 'Administrator with full access'),
  46. (2, 'manager', 'Service manager with task management'),
  47. (3, 'user', 'Regular user with limited access');
  48. -- Role-Permission associations (admin gets all permissions)
  49. INSERT INTO role_permissions (role_id, permission_id)
  50. SELECT 1, id FROM permissions;
  51. -- Manager role permissions (service, task, note operations)
  52. INSERT INTO role_permissions (role_id, permission_id) VALUES
  53. (2, 13), (2, 14), (2, 15), (2, 16), -- service:*
  54. (2, 17), (2, 18), (2, 19), (2, 20), -- task:*
  55. (2, 21), (2, 22), (2, 23), (2, 24), -- note:*
  56. (2, 25), (2, 26), (2, 27), (2, 28), -- channel:*
  57. (2, 29), (2, 30), (2, 31), (2, 32), -- message:*
  58. (2, 33), (2, 34), (2, 35), (2, 36); -- taskstatus:*
  59. -- User role permissions (read-only + create notes/messages)
  60. INSERT INTO role_permissions (role_id, permission_id) VALUES
  61. (3, 2), (3, 6), (3, 10), (3, 14), (3, 18), (3, 22), (3, 26), (3, 30), (3, 34), -- read permissions
  62. (3, 21), (3, 29); -- create notes and messages
  63. -- Admin user (password: secret123)
  64. -- bcrypt hash generated with cost 10
  65. INSERT INTO users (id, email, password, created_at, updated_at) VALUES
  66. (1, 'admin@example.com', '$2a$10$9CNePaChncemsl8ZgMFDfeFm.Rl1K1l8rurgZxVx7C6sbv5tojUDC', datetime('now'), datetime('now'));
  67. -- Associate admin user with admin role
  68. INSERT INTO user_roles (user_id, role_id) VALUES (1, 1);
  69. -- Task Statuses (common workflow states)
  70. INSERT INTO task_statuses (id, code, label, created_at, updated_at) VALUES
  71. (1, 'open', 'Open', datetime('now'), datetime('now')),
  72. (2, 'in_progress', 'In Progress', datetime('now'), datetime('now')),
  73. (3, 'blocked', 'Blocked', datetime('now'), datetime('now')),
  74. (4, 'review', 'In Review', datetime('now'), datetime('now')),
  75. (5, 'done', 'Done', datetime('now'), datetime('now')),
  76. (6, 'cancelled', 'Cancelled', datetime('now'), datetime('now'));