20250922150745_init.up.sql 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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_query_params (
  60. id INTEGER PRIMARY KEY NOT NULL,
  61. position INTEGER NOT NULL,
  62. request_id INTEGER NOT NULL,
  63. key TEXT NOT NULL,
  64. value TEXT NOT NULL,
  65. enabled BOOLEAN NOT NULL DEFAULT TRUE,
  66. UNIQUE(position, request_id),
  67. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE
  68. );
  69. CREATE TABLE request_bodies (
  70. id INTEGER PRIMARY KEY NOT NULL,
  71. request_id UNIQUE NOT NULL,
  72. content_type TEXT NOT NULL,
  73. body TEXT NOT NULL,
  74. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE
  75. );
  76. CREATE TABLE request_headers (
  77. id INTEGER PRIMARY KEY NOT NULL,
  78. request_id INTEGER NOT NULL,
  79. name TEXT NOT NULL,
  80. value TEXT NOT NULL,
  81. FOREIGN KEY (request_id) REFERENCES workspace_entries (id) ON DELETE CASCADE
  82. );