init_prod.sql 5.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. -- ARP Initial Data Bootstrap Script
  2. -- Run this script to set up initial permissions, roles, and an admin user
  3. --
  4. -- Usage:
  5. -- sqlite3 arp.db < init.sql
  6. --
  7. -- Note: The password hash below is for "secret123" using bcrypt.
  8. -- You can generate a new hash with:
  9. -- go run -e 'package main; import ("fmt"; "golang.org/x/crypto/bcrypt"); func main() { h, _ := bcrypt.GenerateFromPassword([]byte("your-password"), 10); fmt.Println(string(h)) }'
  10. -- or
  11. -- python3 -c "import bcrypt; print(bcrypt.hashpw(b'your_password', bcrypt.gensalt()).decode())"
  12. -- Permissions
  13. INSERT INTO permissions (id, code, description, created_at, updated_at) VALUES
  14. (1, 'user:create', 'Create users', datetime('now'), datetime('now')),
  15. (2, 'user:read', 'Read users', datetime('now'), datetime('now')),
  16. (3, 'user:update', 'Update users', datetime('now'), datetime('now')),
  17. (4, 'user:delete', 'Delete users', datetime('now'), datetime('now')),
  18. (5, 'role:create', 'Create roles', datetime('now'), datetime('now')),
  19. (6, 'role:read', 'Read roles', datetime('now'), datetime('now')),
  20. (7, 'role:update', 'Update roles', datetime('now'), datetime('now')),
  21. (8, 'role:delete', 'Delete roles', datetime('now'), datetime('now')),
  22. (9, 'permission:create', 'Create permissions', datetime('now'), datetime('now')),
  23. (10, 'permission:read', 'Read permissions', datetime('now'), datetime('now')),
  24. (11, 'permission:update', 'Update permissions', datetime('now'), datetime('now')),
  25. (12, 'permission:delete', 'Delete permissions', datetime('now'), datetime('now')),
  26. (13, 'service:create', 'Create services', datetime('now'), datetime('now')),
  27. (14, 'service:read', 'Read services', datetime('now'), datetime('now')),
  28. (15, 'service:update', 'Update services', datetime('now'), datetime('now')),
  29. (16, 'service:delete', 'Delete services', datetime('now'), datetime('now')),
  30. (17, 'task:create', 'Create tasks', datetime('now'), datetime('now')),
  31. (18, 'task:read', 'Read tasks', datetime('now'), datetime('now')),
  32. (19, 'task:update', 'Update tasks', datetime('now'), datetime('now')),
  33. (20, 'task:delete', 'Delete tasks', datetime('now'), datetime('now')),
  34. (21, 'note:create', 'Create notes', datetime('now'), datetime('now')),
  35. (22, 'note:read', 'Read notes', datetime('now'), datetime('now')),
  36. (23, 'note:update', 'Update notes', datetime('now'), datetime('now')),
  37. (24, 'note:delete', 'Delete notes', datetime('now'), datetime('now')),
  38. (25, 'channel:create', 'Create channels', datetime('now'), datetime('now')),
  39. (26, 'channel:read', 'Read channels', datetime('now'), datetime('now')),
  40. (27, 'channel:update', 'Update channels', datetime('now'), datetime('now')),
  41. (28, 'channel:delete', 'Delete channels', datetime('now'), datetime('now')),
  42. (29, 'message:create', 'Create messages', datetime('now'), datetime('now')),
  43. (30, 'message:read', 'Read messages', datetime('now'), datetime('now')),
  44. (31, 'message:update', 'Update messages', datetime('now'), datetime('now')),
  45. (32, 'message:delete', 'Delete messages', datetime('now'), datetime('now')),
  46. (33, 'taskstatus:create', 'Create task statuses', datetime('now'), datetime('now')),
  47. (34, 'taskstatus:read', 'Read task statuses', datetime('now'), datetime('now')),
  48. (35, 'taskstatus:update', 'Update task statuses', datetime('now'), datetime('now')),
  49. (36, 'taskstatus:delete', 'Delete task statuses', datetime('now'), datetime('now'));
  50. -- Roles
  51. INSERT INTO roles (id, name, description, created_at, updated_at) VALUES
  52. (1, 'admin', 'Administrator with full access', datetime('now'), datetime('now')),
  53. (2, 'manager', 'Service manager with task management', datetime('now'), datetime('now')),
  54. (3, 'user', 'Regular user with limited access', datetime('now'), datetime('now'));
  55. -- Role-Permission associations (admin gets all permissions)
  56. INSERT INTO role_permissions (role_id, permission_id)
  57. SELECT 1, id FROM permissions;
  58. -- Manager role permissions (service, task, note operations)
  59. INSERT INTO role_permissions (role_id, permission_id) VALUES
  60. (2, 13), (2, 14), (2, 15), (2, 16), -- service:*
  61. (2, 17), (2, 18), (2, 19), (2, 20), -- task:*
  62. (2, 21), (2, 22), (2, 23), (2, 24), -- note:*
  63. (2, 25), (2, 26), (2, 27), (2, 28), -- channel:*
  64. (2, 29), (2, 30), (2, 31), (2, 32), -- message:*
  65. (2, 33), (2, 34), (2, 35), (2, 36); -- taskstatus:*
  66. -- User role permissions (read-only + create notes/messages)
  67. INSERT INTO role_permissions (role_id, permission_id) VALUES
  68. (3, 2), (3, 6), (3, 10), (3, 14), (3, 18), (3, 22), (3, 26), (3, 30), (3, 34), -- read permissions
  69. (3, 21), (3, 29); -- create notes and messages
  70. -- Admin user (password: secret123)
  71. -- bcrypt hash generated with cost 10
  72. INSERT INTO users (id, email, password, created_at, updated_at) VALUES
  73. (1, 'admin@example.com', '$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', datetime('now'), datetime('now'));
  74. -- Associate admin user with admin role
  75. INSERT INTO user_roles (user_id, role_id) VALUES (1, 1);
  76. -- Task Statuses (common workflow states)
  77. INSERT INTO task_statuses (id, code, label, created_at, updated_at) VALUES
  78. (1, 'open', 'Open', datetime('now'), datetime('now')),
  79. (2, 'in_progress', 'In Progress', datetime('now'), datetime('now')),
  80. (3, 'blocked', 'Blocked', datetime('now'), datetime('now')),
  81. (4, 'review', 'In Review', datetime('now'), datetime('now')),
  82. (5, 'done', 'Done', datetime('now'), datetime('now')),
  83. (6, 'cancelled', 'Cancelled', datetime('now'), datetime('now'));