20250922150745_init.up.sql 2.5 KB

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