20250922150745_init.up.sql 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. CREATE TABLE workspaces (
  2. id INTEGER PRIMARY KEY NOT NULL,
  3. name TEXT NOT NULL UNIQUE
  4. );
  5. CREATE TABLE auth(
  6. id INTEGER PRIMARY KEY NOT NULL,
  7. workspace_id INTEGER NOT NULL,
  8. params JSONB NOT NULL,
  9. FOREIGN KEY (workspace_id) REFERENCES workspaces (id) ON DELETE CASCADE
  10. );
  11. CREATE TABLE workspace_envs (
  12. id INTEGER PRIMARY KEY NOT NULL,
  13. workspace_id INTEGER NOT NULL,
  14. name TEXT NOT NULL,
  15. FOREIGN KEY (workspace_id) REFERENCES workspaces (id) ON DELETE CASCADE
  16. );
  17. CREATE TABLE workspace_env_variables (
  18. id INTEGER PRIMARY KEY NOT NULL,
  19. workspace_id INTEGER NOT NULL,
  20. env_id INTEGER NOT NULL,
  21. name TEXT NOT NULL,
  22. value TEXT NOT NULL,
  23. secret BOOLEAN NOT NULL,
  24. FOREIGN KEY (workspace_id) REFERENCES workspaces (id) ON DELETE CASCADE,
  25. FOREIGN KEY (env_id) REFERENCES workspace_envs (id) ON DELETE CASCADE,
  26. UNIQUE(env_id, name)
  27. );
  28. CREATE TABLE workspace_entries (
  29. id INTEGER PRIMARY KEY NOT NULL,
  30. workspace_id INTEGER NOT NULL,
  31. parent_id INTEGER,
  32. name TEXT NOT NULL,
  33. type INTEGER NOT NULL,
  34. auth INTEGER,
  35. auth_inherit BOOLEAN NOT NULL DEFAULT TRUE,
  36. FOREIGN KEY (parent_id) REFERENCES workspace_entries (id) ON DELETE CASCADE,
  37. FOREIGN KEY (workspace_id) REFERENCES workspaces (id) ON DELETE CASCADE,
  38. FOREIGN KEY (auth) REFERENCES auth (id) ON DELETE SET NULL
  39. );
  40. CREATE TABLE request_params (
  41. id INTEGER PRIMARY KEY NOT NULL,
  42. workspace_id INTEGER NOT NULL,
  43. request_id INTEGER UNIQUE NOT NULL,
  44. method TEXT NOT NULL,
  45. url TEXT NOT NULL,
  46. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE,
  47. FOREIGN KEY (workspace_id) REFERENCES workspaces (id) ON DELETE CASCADE
  48. );
  49. CREATE TABLE request_path_params (
  50. id INTEGER PRIMARY KEY NOT NULL,
  51. position INTEGER NOT NULL,
  52. request_id INTEGER NOT NULL,
  53. name TEXT NOT NULL,
  54. value TEXT NOT NULL,
  55. UNIQUE(position, request_id),
  56. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE
  57. );
  58. CREATE TABLE request_bodies (
  59. id INTEGER PRIMARY KEY NOT NULL,
  60. request_id UNIQUE NOT NULL,
  61. content_type TEXT NOT NULL,
  62. body TEXT NOT NULL,
  63. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE
  64. );
  65. CREATE TABLE request_headers (
  66. id INTEGER PRIMARY KEY NOT NULL,
  67. request_id INTEGER NOT NULL,
  68. name TEXT NOT NULL,
  69. value TEXT NOT NULL,
  70. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE
  71. );