insforge 1.2.10 → 1.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/.claude-plugin/marketplace.json +20 -20
  2. package/.dockerignore +60 -60
  3. package/.env.example +83 -77
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -36
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -11
  6. package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -26
  7. package/.github/PULL_REQUEST_TEMPLATE.md +7 -7
  8. package/.github/copilot-instructions.md +146 -146
  9. package/.github/workflows/build-image.yml +65 -65
  10. package/.github/workflows/ci-premerge-check.yml +23 -23
  11. package/.github/workflows/e2e.yml +63 -63
  12. package/.github/workflows/lint-and-format.yml +32 -32
  13. package/.prettierignore +64 -64
  14. package/CHANGELOG.md +46 -44
  15. package/CLAUDE_PLUGIN.md +104 -104
  16. package/CODE_OF_CONDUCT.md +128 -128
  17. package/CONTRIBUTING.md +125 -125
  18. package/Dockerfile +30 -30
  19. package/GITHUB_OAUTH_SETUP.md +49 -49
  20. package/GOOGLE_OAUTH_SETUP.md +148 -148
  21. package/LICENSE +201 -201
  22. package/README.md +182 -182
  23. package/assets/Dark.svg +23 -23
  24. package/auth/package.json +30 -28
  25. package/auth/src/lib/broadcastService.ts +4 -4
  26. package/auth/src/lib/insforge.ts +8 -0
  27. package/auth/src/main.tsx +2 -4
  28. package/auth/src/pages/SignInPage.tsx +5 -2
  29. package/auth/src/pages/SignUpPage.tsx +5 -2
  30. package/auth/src/pages/VerifyEmailPage.tsx +18 -0
  31. package/auth/tsconfig.json +33 -32
  32. package/auth/tsconfig.node.json +11 -11
  33. package/backend/package.json +82 -75
  34. package/backend/src/api/middlewares/rate-limiters.ts +127 -127
  35. package/backend/src/api/routes/ai/index.routes.ts +475 -468
  36. package/backend/src/api/routes/auth/index.routes.ts +720 -570
  37. package/backend/src/api/routes/auth/oauth.routes.ts +478 -448
  38. package/backend/src/api/routes/database/advance.routes.ts +37 -16
  39. package/backend/src/api/routes/database/index.routes.ts +80 -1
  40. package/backend/src/api/routes/database/records.routes.ts +48 -184
  41. package/backend/src/api/routes/database/rpc.routes.ts +69 -0
  42. package/backend/src/api/routes/database/tables.routes.ts +0 -14
  43. package/backend/src/api/routes/deployments/index.routes.ts +192 -0
  44. package/backend/src/api/routes/docs/index.routes.ts +76 -76
  45. package/backend/src/api/routes/email/index.routes.ts +35 -0
  46. package/backend/src/api/routes/functions/index.routes.ts +21 -15
  47. package/backend/src/api/routes/metadata/index.routes.ts +38 -0
  48. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  49. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  50. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  51. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  52. package/backend/src/api/routes/storage/index.routes.ts +18 -12
  53. package/backend/src/api/routes/usage/index.routes.ts +6 -4
  54. package/backend/src/api/routes/webhooks/index.routes.ts +109 -0
  55. package/backend/src/infra/database/database.manager.ts +14 -11
  56. package/backend/src/infra/database/migrations/000_create-base-tables.sql +141 -141
  57. package/backend/src/infra/database/migrations/001_create-helper-functions.sql +40 -40
  58. package/backend/src/infra/database/migrations/002_rename-auth-tables.sql +29 -29
  59. package/backend/src/infra/database/migrations/003_create-users-table.sql +55 -55
  60. package/backend/src/infra/database/migrations/004_add-reload-postgrest-func.sql +23 -23
  61. package/backend/src/infra/database/migrations/005_enable-project-admin-modify-users.sql +29 -29
  62. package/backend/src/infra/database/migrations/006_modify-ai-usage-table.sql +24 -24
  63. package/backend/src/infra/database/migrations/007_drop-metadata-table.sql +1 -1
  64. package/backend/src/infra/database/migrations/008_add-system-tables.sql +76 -76
  65. package/backend/src/infra/database/migrations/009_add-function-secrets.sql +23 -23
  66. package/backend/src/infra/database/migrations/010_modify-ai-config-modalities.sql +93 -93
  67. package/backend/src/infra/database/migrations/011_refactor-secrets-table.sql +15 -15
  68. package/backend/src/infra/database/migrations/012_add-storage-uploaded-by.sql +7 -7
  69. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -44
  70. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +7 -7
  71. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +59 -59
  72. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -24
  73. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  74. package/backend/src/infra/database/migrations/018_schema-rework.sql +441 -0
  75. package/backend/src/infra/database/migrations/019_create-deployments-table.sql +36 -0
  76. package/backend/src/infra/database/migrations/020_add-audio-modality.sql +11 -0
  77. package/backend/src/infra/database/migrations/bootstrap/bootstrap-migrations.js +103 -0
  78. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  79. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  80. package/backend/src/infra/security/token.manager.ts +216 -125
  81. package/backend/src/infra/socket/socket.manager.ts +198 -64
  82. package/backend/src/providers/ai/openrouter.provider.ts +24 -12
  83. package/backend/src/providers/database/base.provider.ts +39 -0
  84. package/backend/src/providers/database/cloud.provider.ts +159 -0
  85. package/backend/src/providers/deployments/vercel.provider.ts +516 -0
  86. package/backend/src/providers/email/base.provider.ts +4 -7
  87. package/backend/src/providers/email/cloud.provider.ts +84 -0
  88. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  89. package/backend/src/providers/oauth/index.ts +1 -0
  90. package/backend/src/server.ts +329 -284
  91. package/backend/src/services/ai/ai-config.service.ts +6 -6
  92. package/backend/src/services/ai/ai-model.service.ts +60 -60
  93. package/backend/src/services/ai/ai-usage.service.ts +7 -7
  94. package/backend/src/services/ai/chat-completion.service.ts +415 -220
  95. package/backend/src/services/ai/helpers.ts +64 -64
  96. package/backend/src/services/ai/image-generation.service.ts +3 -3
  97. package/backend/src/services/ai/index.ts +13 -13
  98. package/backend/src/services/auth/auth-config.service.ts +4 -4
  99. package/backend/src/services/auth/auth-otp.service.ts +6 -6
  100. package/backend/src/services/auth/auth.service.ts +148 -74
  101. package/backend/src/services/auth/index.ts +4 -4
  102. package/backend/src/services/auth/oauth-config.service.ts +12 -12
  103. package/backend/src/services/database/database-advance.service.ts +19 -55
  104. package/backend/src/services/database/database-table.service.ts +38 -94
  105. package/backend/src/services/database/database.service.ts +127 -0
  106. package/backend/src/services/database/postgrest-proxy.service.ts +165 -0
  107. package/backend/src/services/deployments/deployment.service.ts +693 -0
  108. package/backend/src/services/email/email.service.ts +5 -7
  109. package/backend/src/services/functions/function.service.ts +61 -41
  110. package/backend/src/services/logs/audit.service.ts +10 -10
  111. package/backend/src/services/realtime/index.ts +3 -0
  112. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  113. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  114. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  115. package/backend/src/services/secrets/secret.service.ts +101 -27
  116. package/backend/src/services/storage/storage.service.ts +30 -30
  117. package/backend/src/services/usage/usage.service.ts +6 -6
  118. package/backend/src/types/ai.ts +8 -0
  119. package/backend/src/types/auth.ts +16 -1
  120. package/backend/src/types/database.ts +2 -0
  121. package/backend/src/types/deployments.ts +33 -0
  122. package/backend/src/types/realtime.ts +18 -0
  123. package/backend/src/types/socket.ts +7 -31
  124. package/backend/src/types/storage.ts +1 -1
  125. package/backend/src/types/webhooks.ts +45 -0
  126. package/backend/src/utils/cookies.ts +34 -0
  127. package/backend/src/utils/environment.ts +0 -14
  128. package/backend/src/utils/s3-config-loader.ts +64 -0
  129. package/backend/src/utils/seed.ts +79 -43
  130. package/backend/src/utils/sql-parser.ts +216 -0
  131. package/backend/src/utils/utils.ts +114 -114
  132. package/backend/src/utils/validations.ts +10 -10
  133. package/backend/tests/README.md +133 -133
  134. package/backend/tests/cleanup-all-test-data.sh +230 -230
  135. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  136. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  137. package/backend/tests/local/test-ai-config.sh +129 -129
  138. package/backend/tests/local/test-ai-usage.sh +80 -80
  139. package/backend/tests/local/test-auth-router.sh +143 -143
  140. package/backend/tests/local/test-database-router.sh +222 -222
  141. package/backend/tests/local/test-e2e.sh +240 -240
  142. package/backend/tests/local/test-fk-errors.sh +96 -96
  143. package/backend/tests/local/test-functions.sh +123 -123
  144. package/backend/tests/local/test-id-field.sh +200 -200
  145. package/backend/tests/local/test-logs.sh +132 -132
  146. package/backend/tests/local/test-public-bucket.sh +264 -264
  147. package/backend/tests/local/test-rpc.sh +141 -0
  148. package/backend/tests/local/test-secrets.sh +249 -249
  149. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  150. package/backend/tests/local/test-traditional-rest.sh +208 -208
  151. package/backend/tests/manual/README.md +50 -50
  152. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  153. package/backend/tests/manual/seed-large-table.sql +100 -100
  154. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  155. package/backend/tests/manual/test-ai-model-plugins.sh +258 -0
  156. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  157. package/backend/tests/manual/test-database-advance.sh +296 -296
  158. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  159. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  160. package/backend/tests/manual/test-rawsql-modes.sh +244 -244
  161. package/backend/tests/manual/test-universal-storage.sh +263 -263
  162. package/backend/tests/manual/test-users.sql +17 -17
  163. package/backend/tests/run-all-tests.sh +139 -139
  164. package/backend/tests/setup.ts +0 -0
  165. package/backend/tests/test-config.sh +338 -338
  166. package/backend/tests/unit/analyze-query.test.ts +697 -0
  167. package/backend/tests/unit/database-advance.test.ts +326 -0
  168. package/backend/tests/unit/helpers.test.ts +2 -2
  169. package/backend/tsconfig.json +22 -22
  170. package/claude-plugin/.claude-plugin/plugin.json +24 -24
  171. package/claude-plugin/README.md +133 -133
  172. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +273 -270
  173. package/docker-compose.prod.yml +204 -200
  174. package/docker-compose.yml +232 -228
  175. package/docker-init/db/db-init.sql +97 -97
  176. package/docker-init/db/jwt.sql +5 -5
  177. package/docker-init/db/postgresql.conf +16 -16
  178. package/docker-init/logs/vector.yml +236 -236
  179. package/docs/README.md +44 -44
  180. package/docs/agent-docs/deployment.md +79 -0
  181. package/docs/agent-docs/real-time.md +269 -0
  182. package/docs/changelog.mdx +212 -67
  183. package/docs/core-concepts/ai/architecture.mdx +350 -372
  184. package/docs/core-concepts/ai/sdk.mdx +238 -213
  185. package/docs/core-concepts/authentication/architecture.mdx +276 -278
  186. package/docs/core-concepts/authentication/sdk.mdx +710 -414
  187. package/docs/core-concepts/authentication/ui-components/customization.mdx +733 -529
  188. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +247 -221
  189. package/docs/core-concepts/authentication/ui-components/react-router.mdx +183 -184
  190. package/docs/core-concepts/authentication/ui-components/react.mdx +136 -129
  191. package/docs/core-concepts/database/architecture.mdx +292 -255
  192. package/docs/core-concepts/database/pgvector.mdx +138 -0
  193. package/docs/core-concepts/database/sdk.mdx +382 -382
  194. package/docs/core-concepts/deployments/architecture.mdx +152 -0
  195. package/docs/core-concepts/email/architecture.mdx +103 -0
  196. package/docs/core-concepts/email/sdk.mdx +53 -0
  197. package/docs/core-concepts/functions/architecture.mdx +105 -105
  198. package/docs/core-concepts/functions/sdk.mdx +183 -184
  199. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  200. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  201. package/docs/core-concepts/storage/architecture.mdx +243 -243
  202. package/docs/core-concepts/storage/sdk.mdx +253 -253
  203. package/docs/deployment/README.md +94 -94
  204. package/docs/deployment/deploy-to-aws-ec2.md +564 -564
  205. package/docs/deployment/deploy-to-azure-virtual-machines.md +312 -312
  206. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -613
  207. package/docs/deployment/deploy-to-render.md +441 -441
  208. package/docs/deprecated/insforge-auth-api.md +214 -214
  209. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  210. package/docs/deprecated/insforge-db-api.md +358 -358
  211. package/docs/deprecated/insforge-db-sdk.md +139 -139
  212. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  213. package/docs/deprecated/insforge-debug.md +64 -64
  214. package/docs/deprecated/insforge-instructions.md +123 -123
  215. package/docs/deprecated/insforge-project.md +117 -117
  216. package/docs/deprecated/insforge-storage-api.md +278 -278
  217. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  218. package/docs/docs.json +240 -210
  219. package/docs/examples/framework-guides/nextjs.mdx +131 -131
  220. package/docs/examples/framework-guides/nuxt.mdx +165 -165
  221. package/docs/examples/framework-guides/react.mdx +165 -165
  222. package/docs/examples/framework-guides/svelte.mdx +153 -153
  223. package/docs/examples/framework-guides/vue.mdx +159 -159
  224. package/docs/examples/overview.mdx +67 -67
  225. package/docs/favicon.png +0 -0
  226. package/docs/favicon.svg +4 -19
  227. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  228. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  229. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  230. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  231. package/docs/images/changelog/dec-2025/apple-oauth.mp4 +0 -0
  232. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  233. package/docs/images/changelog/dec-2025/moreModels.png +0 -0
  234. package/docs/images/changelog/dec-2025/multi-region.webp +0 -0
  235. package/docs/images/changelog/dec-2025/postgres-connection.webp +0 -0
  236. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  237. package/docs/images/changelog/dec-2025/realtime2.png +0 -0
  238. package/docs/images/icons/ai.svg +4 -4
  239. package/docs/images/logos/nextjs.svg +4 -4
  240. package/docs/images/logos/nuxt.svg +4 -4
  241. package/docs/images/logos/react.svg +5 -5
  242. package/docs/images/logos/svelte.svg +4 -4
  243. package/docs/images/logos/vue.svg +5 -5
  244. package/docs/images/mcp-setup/CC-MCP-1.mp4 +0 -0
  245. package/docs/images/mcp-setup/CC-MCP-2.mp4 +0 -0
  246. package/docs/images/mcp-setup/Cursor-MCP-1.mp4 +0 -0
  247. package/docs/images/mcp-setup/Cursor-MCP-2.mp4 +0 -0
  248. package/docs/images/mcp-setup/Cursor-MCP-3.mp4 +0 -0
  249. package/docs/images/mcp-setup/claude-code-connect.png +0 -0
  250. package/docs/images/mcp-setup/cline-1.png +0 -0
  251. package/docs/images/mcp-setup/cline-2.png +0 -0
  252. package/docs/images/mcp-setup/cline-3.png +0 -0
  253. package/docs/images/mcp-setup/connect-project.png +0 -0
  254. package/docs/images/mcp-setup/copilot-1.png +0 -0
  255. package/docs/images/mcp-setup/copilot-2.png +0 -0
  256. package/docs/images/mcp-setup/copilot-3.png +0 -0
  257. package/docs/images/mcp-setup/mcp-json-1.png +0 -0
  258. package/docs/images/mcp-setup/mcp-json-2.png +0 -0
  259. package/docs/images/mcp-setup/qoder-1.png +0 -0
  260. package/docs/images/mcp-setup/qoder-2.png +0 -0
  261. package/docs/images/mcp-setup/roocode-1.png +0 -0
  262. package/docs/images/mcp-setup/roocode-2.png +0 -0
  263. package/docs/images/mcp-setup/trae-1.png +0 -0
  264. package/docs/images/mcp-setup/trae-2.png +0 -0
  265. package/docs/images/mcp-setup/trae-3.png +0 -0
  266. package/docs/images/mcp-setup/trae-4.png +0 -0
  267. package/docs/images/mcp-setup/trae-5.png +0 -0
  268. package/docs/images/mcp-setup/windsurf-1.png +0 -0
  269. package/docs/images/mcp-setup/windsurf-2.png +0 -0
  270. package/docs/insforge-instructions-sdk.md +93 -88
  271. package/docs/introduction.mdx +46 -45
  272. package/docs/logo/dark.svg +22 -22
  273. package/docs/logo/light.svg +20 -20
  274. package/docs/mcp-setup.mdx +332 -0
  275. package/docs/oauth-server.mdx +563 -0
  276. package/docs/partnership.mdx +720 -646
  277. package/docs/quickstart.mdx +82 -82
  278. package/docs/showcase.mdx +52 -52
  279. package/docs/snippets/sdk-installation.mdx +21 -21
  280. package/docs/snippets/service-icons.mdx +27 -27
  281. package/docs/vscode-extension.mdx +74 -0
  282. package/eslint.config.js +1 -0
  283. package/examples/oauth/frontend-oauth-example.html +250 -250
  284. package/examples/response-examples.md +443 -443
  285. package/frontend/components.json +17 -17
  286. package/frontend/package.json +69 -69
  287. package/frontend/src/App.tsx +8 -3
  288. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  289. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  290. package/frontend/src/assets/icons/checked.svg +3 -3
  291. package/frontend/src/assets/icons/connected.svg +3 -3
  292. package/frontend/src/assets/icons/error.svg +3 -3
  293. package/frontend/src/assets/icons/loader.svg +9 -9
  294. package/frontend/src/assets/icons/pencil.svg +4 -4
  295. package/frontend/src/assets/icons/refresh.svg +4 -4
  296. package/frontend/src/assets/icons/step_active.svg +3 -3
  297. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  298. package/frontend/src/assets/icons/warning.svg +3 -3
  299. package/frontend/src/assets/logos/antigravity.svg +1 -0
  300. package/frontend/src/assets/logos/apple.svg +3 -3
  301. package/frontend/src/assets/logos/claude_code.svg +3 -3
  302. package/frontend/src/assets/logos/cline.svg +6 -6
  303. package/frontend/src/assets/logos/copilot.svg +10 -0
  304. package/frontend/src/assets/logos/cursor.svg +20 -20
  305. package/frontend/src/assets/logos/deepseek.svg +139 -0
  306. package/frontend/src/assets/logos/discord.svg +8 -8
  307. package/frontend/src/assets/logos/facebook.svg +3 -3
  308. package/frontend/src/assets/logos/gemini.svg +19 -19
  309. package/frontend/src/assets/logos/github.svg +5 -5
  310. package/frontend/src/assets/logos/google.svg +13 -13
  311. package/frontend/src/assets/logos/grok.svg +10 -10
  312. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  313. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  314. package/frontend/src/assets/logos/instagram.svg +1 -1
  315. package/frontend/src/assets/logos/kiro.svg +9 -0
  316. package/frontend/src/assets/logos/linkedin.svg +3 -3
  317. package/frontend/src/assets/logos/openai.svg +10 -10
  318. package/frontend/src/assets/logos/qoder.svg +4 -0
  319. package/frontend/src/assets/logos/qwen.svg +15 -0
  320. package/frontend/src/assets/logos/roo_code.svg +9 -9
  321. package/frontend/src/assets/logos/spotify.svg +16 -16
  322. package/frontend/src/assets/logos/tiktok.svg +5 -5
  323. package/frontend/src/assets/logos/trae.svg +3 -3
  324. package/frontend/src/assets/logos/windsurf.svg +10 -10
  325. package/frontend/src/assets/logos/x.svg +3 -3
  326. package/frontend/src/components/CodeBlock.tsx +2 -2
  327. package/frontend/src/components/ConnectCTA.tsx +3 -2
  328. package/frontend/src/components/datagrid/DataGrid.tsx +90 -62
  329. package/frontend/src/components/datagrid/datagridTypes.tsx +2 -1
  330. package/frontend/src/components/datagrid/index.ts +1 -1
  331. package/frontend/src/components/index.ts +0 -1
  332. package/frontend/src/components/layout/AppHeader.tsx +13 -37
  333. package/frontend/src/components/layout/AppSidebar.tsx +85 -100
  334. package/frontend/src/components/layout/Layout.tsx +34 -32
  335. package/frontend/src/components/layout/PrimaryMenu.tsx +12 -4
  336. package/frontend/src/components/radix/Select.tsx +151 -151
  337. package/frontend/src/features/ai/components/AIConfigCard.tsx +200 -200
  338. package/frontend/src/features/ai/components/AIEmptyState.tsx +23 -23
  339. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +102 -101
  340. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -135
  341. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -51
  342. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -118
  343. package/frontend/src/features/ai/components/index.ts +6 -6
  344. package/frontend/src/features/ai/helpers.ts +147 -141
  345. package/frontend/src/features/ai/{page → pages}/AIPage.tsx +166 -166
  346. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -96
  347. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +1 -0
  348. package/frontend/src/features/auth/components/UsersDataGrid.tsx +61 -31
  349. package/frontend/src/features/auth/components/index.ts +5 -5
  350. package/frontend/src/features/auth/helpers.tsx +8 -0
  351. package/frontend/src/features/auth/{page → pages}/AuthMethodsPage.tsx +275 -275
  352. package/frontend/src/features/auth/{page → pages}/UsersPage.tsx +0 -28
  353. package/frontend/src/features/dashboard/{page → pages}/DashboardPage.tsx +1 -1
  354. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +0 -2
  355. package/frontend/src/features/database/components/ForeignKeyCell.tsx +38 -11
  356. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +18 -8
  357. package/frontend/src/features/database/components/LinkRecordModal.tsx +61 -13
  358. package/frontend/src/features/database/components/RecordFormField.tsx +1 -1
  359. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  360. package/frontend/src/features/database/components/TableForm.tsx +0 -4
  361. package/frontend/src/features/database/components/TableSidebar.tsx +0 -3
  362. package/frontend/src/features/database/components/TablesEmptyState.tsx +1 -1
  363. package/frontend/src/features/database/components/TemplatePreview.tsx +1 -2
  364. package/frontend/src/features/database/constants.ts +16 -28
  365. package/frontend/src/features/database/hooks/useCSVImport.ts +3 -2
  366. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  367. package/frontend/src/features/database/hooks/useRawSQL.ts +3 -2
  368. package/frontend/src/features/database/hooks/useTables.ts +30 -28
  369. package/frontend/src/features/database/index.ts +1 -0
  370. package/frontend/src/features/database/{page → pages}/FunctionsPage.tsx +29 -42
  371. package/frontend/src/features/database/{page → pages}/IndexesPage.tsx +34 -51
  372. package/frontend/src/features/database/{page → pages}/PoliciesPage.tsx +42 -58
  373. package/frontend/src/features/database/{page → pages}/SQLEditorPage.tsx +2 -2
  374. package/frontend/src/features/database/{page → pages}/TablesPage.tsx +0 -42
  375. package/frontend/src/features/database/{page → pages}/TriggersPage.tsx +34 -51
  376. package/frontend/src/features/database/services/advance.service.ts +1 -41
  377. package/frontend/src/features/database/services/database.service.ts +55 -0
  378. package/frontend/src/features/database/services/record.service.ts +4 -20
  379. package/frontend/src/features/database/services/table.service.ts +1 -10
  380. package/frontend/src/features/database/templates/ai-chatbot.ts +6 -6
  381. package/frontend/src/features/database/templates/ecommerce-platform.ts +2 -2
  382. package/frontend/src/features/database/templates/instagram-clone.ts +10 -10
  383. package/frontend/src/features/database/templates/notion-clone.ts +8 -8
  384. package/frontend/src/features/database/templates/reddit-clone.ts +10 -10
  385. package/frontend/src/features/deployments/components/DeploymentRow.tsx +93 -0
  386. package/frontend/src/features/deployments/components/DeploymentsEmptyState.tsx +15 -0
  387. package/frontend/src/features/deployments/hooks/useDeployments.ts +157 -0
  388. package/frontend/src/features/deployments/pages/DeploymentsPage.tsx +318 -0
  389. package/frontend/src/features/deployments/services/deployments.service.ts +63 -0
  390. package/frontend/src/features/functions/components/FunctionRow.tsx +72 -72
  391. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +56 -56
  392. package/frontend/src/features/functions/components/SecretRow.tsx +3 -3
  393. package/frontend/src/features/functions/components/index.ts +5 -5
  394. package/frontend/src/features/functions/hooks/useFunctions.ts +5 -4
  395. package/frontend/src/features/functions/hooks/useSecrets.ts +6 -9
  396. package/frontend/src/features/functions/{page → pages}/FunctionsPage.tsx +21 -44
  397. package/frontend/src/features/functions/{page → pages}/SecretsPage.tsx +118 -116
  398. package/frontend/src/features/functions/services/function.service.ts +8 -25
  399. package/frontend/src/features/functions/services/secret.service.ts +23 -41
  400. package/frontend/src/features/login/{page → pages}/CloudLoginPage.tsx +125 -118
  401. package/frontend/src/features/logs/components/LogDetailPanel.tsx +41 -0
  402. package/frontend/src/features/logs/components/LogsDataGrid.tsx +32 -1
  403. package/frontend/src/features/logs/components/index.ts +1 -0
  404. package/frontend/src/features/logs/hooks/useMcpUsage.ts +13 -66
  405. package/frontend/src/features/logs/{page → pages}/LogsPage.tsx +36 -6
  406. package/frontend/src/features/onboard/components/ApiCredentialsSection.tsx +59 -0
  407. package/frontend/src/features/onboard/components/ConnectionStringSection.tsx +180 -0
  408. package/frontend/src/features/onboard/components/McpConnectionSection.tsx +159 -0
  409. package/frontend/src/features/onboard/components/OnboardingController.tsx +68 -0
  410. package/frontend/src/features/onboard/components/OnboardingModal.tsx +121 -267
  411. package/frontend/src/features/onboard/components/ShowPasswordButton.tsx +21 -0
  412. package/frontend/src/features/onboard/components/index.ts +9 -4
  413. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +1 -1
  414. package/frontend/src/features/onboard/components/mcp/QoderDeeplinkGenerator.tsx +36 -0
  415. package/frontend/src/features/onboard/components/mcp/helpers.tsx +123 -98
  416. package/frontend/src/features/onboard/components/mcp/index.ts +4 -3
  417. package/frontend/src/features/onboard/index.ts +17 -13
  418. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  419. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  420. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  421. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  422. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  423. package/frontend/src/features/realtime/index.ts +11 -0
  424. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  425. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  426. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  427. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  428. package/frontend/src/features/settings/pages/SettingsPage.tsx +349 -0
  429. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +1 -29
  430. package/frontend/src/features/visualizer/components/AuthNode.tsx +4 -4
  431. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +24 -11
  432. package/frontend/src/features/visualizer/{page → pages}/VisualizerPage.tsx +11 -36
  433. package/frontend/src/index.css +249 -249
  434. package/frontend/src/lib/contexts/ModalContext.tsx +35 -0
  435. package/frontend/src/lib/contexts/SocketContext.tsx +119 -75
  436. package/frontend/src/lib/hooks/useMetadata.ts +45 -1
  437. package/frontend/src/lib/hooks/useModal.tsx +2 -0
  438. package/frontend/src/lib/routing/AppRoutes.tsx +103 -84
  439. package/frontend/src/lib/services/metadata.service.ts +20 -3
  440. package/frontend/src/lib/utils/cloudMessaging.ts +1 -1
  441. package/frontend/src/lib/utils/menuItems.ts +223 -183
  442. package/frontend/src/lib/utils/utils.ts +196 -183
  443. package/frontend/tsconfig.json +25 -25
  444. package/frontend/tsconfig.node.json +9 -9
  445. package/functions/deno.json +24 -24
  446. package/functions/server.ts +6 -6
  447. package/functions/worker-template.js +1 -1
  448. package/i18n/README.ar.md +130 -130
  449. package/i18n/README.de.md +130 -130
  450. package/i18n/README.es.md +154 -154
  451. package/i18n/README.fr.md +134 -134
  452. package/i18n/README.hi.md +129 -129
  453. package/i18n/README.ja.md +174 -174
  454. package/i18n/README.ko.md +136 -136
  455. package/i18n/README.pt-BR.md +131 -131
  456. package/i18n/README.ru.md +129 -129
  457. package/i18n/README.zh-CN.md +133 -133
  458. package/openapi/ai.yaml +825 -715
  459. package/openapi/auth.yaml +1324 -1244
  460. package/openapi/email.yaml +158 -0
  461. package/openapi/functions.yaml +475 -475
  462. package/openapi/health.yaml +29 -29
  463. package/openapi/logs.yaml +221 -223
  464. package/openapi/metadata.yaml +175 -177
  465. package/openapi/realtime.yaml +699 -0
  466. package/openapi/records.yaml +381 -381
  467. package/openapi/secrets.yaml +370 -370
  468. package/openapi/storage.yaml +875 -875
  469. package/openapi/tables.yaml +462 -463
  470. package/package.json +97 -97
  471. package/shared-schemas/package.json +31 -31
  472. package/shared-schemas/src/ai-api.schema.ts +251 -143
  473. package/shared-schemas/src/ai.schema.ts +8 -4
  474. package/shared-schemas/src/auth-api.schema.ts +380 -339
  475. package/shared-schemas/src/auth.schema.ts +18 -11
  476. package/shared-schemas/src/cloud-events.schema.ts +26 -0
  477. package/shared-schemas/src/database-api.schema.ts +32 -1
  478. package/shared-schemas/src/database.schema.ts +39 -0
  479. package/shared-schemas/src/deployments-api.schema.ts +55 -0
  480. package/shared-schemas/src/deployments.schema.ts +30 -0
  481. package/shared-schemas/src/docs.schema.ts +32 -0
  482. package/shared-schemas/src/email-api.schema.ts +30 -0
  483. package/shared-schemas/src/functions-api.schema.ts +13 -4
  484. package/shared-schemas/src/functions.schema.ts +1 -1
  485. package/shared-schemas/src/index.ts +22 -14
  486. package/shared-schemas/src/metadata.schema.ts +39 -4
  487. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  488. package/shared-schemas/src/realtime.schema.ts +143 -0
  489. package/shared-schemas/src/secrets-api.schema.ts +44 -0
  490. package/shared-schemas/src/secrets.schema.ts +15 -0
  491. package/shared-schemas/tsconfig.json +21 -21
  492. package/tsconfig.json +7 -7
  493. package/zeabur/README.md +26 -13
  494. package/zeabur/template.yml +1001 -1032
  495. package/.cursor/rules/cursor-rules.mdc +0 -94
  496. package/backend/src/types/profile.ts +0 -55
  497. package/frontend/src/components/ProjectInfoModal.tsx +0 -128
  498. package/frontend/src/features/database/hooks/useFullMetadata.ts +0 -18
  499. package/test-gemini.sh +0 -35
  500. package/test-usage-admin.sh +0 -57
  501. package/test-usage.sh +0 -50
  502. /package/frontend/src/features/auth/{page → pages}/ConfigurationPage.tsx +0 -0
  503. /package/frontend/src/features/database/{page → pages}/TemplatesPage.tsx +0 -0
  504. /package/frontend/src/features/login/{page → pages}/LoginPage.tsx +0 -0
  505. /package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +0 -0
  506. /package/frontend/src/features/logs/{page → pages}/MCPLogsPage.tsx +0 -0
@@ -1,464 +1,463 @@
1
- openapi: 3.0.3
2
- info:
3
- title: Insforge Tables API
4
- version: 1.0.0
5
-
6
- paths:
7
- /api/database/tables:
8
- get:
9
- summary: List Tables
10
- tags:
11
- - Admin
12
- security:
13
- - bearerAuth: []
14
- - apiKey: []
15
- responses:
16
- '200':
17
- description: List of table names
18
- content:
19
- application/json:
20
- schema:
21
- type: array
22
- items:
23
- type: string
24
- example:
25
- - "users"
26
- - "posts"
27
- - "comments"
28
- - "categories"
29
-
30
- post:
31
- summary: Create Table
32
- tags:
33
- - Admin
34
- security:
35
- - bearerAuth: []
36
- - apiKey: []
37
- requestBody:
38
- required: true
39
- content:
40
- application/json:
41
- schema:
42
- type: object
43
- required:
44
- - tableName
45
- - columns
46
- properties:
47
- tableName:
48
- type: string
49
- columns:
50
- type: array
51
- items:
52
- type: object
53
- required:
54
- - name
55
- - type
56
- - nullable
57
- properties:
58
- name:
59
- type: string
60
- type:
61
- type: string
62
- enum: [string, datetime, integer, float, boolean, uuid, json, file]
63
- nullable:
64
- type: boolean
65
- unique:
66
- type: boolean
67
- defaultValue:
68
- type: string
69
- foreignKey:
70
- type: object
71
- properties:
72
- table:
73
- type: string
74
- column:
75
- type: string
76
- onDelete:
77
- type: string
78
- enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
79
- default: NO ACTION
80
- responses:
81
- '201':
82
- description: Table created
83
- content:
84
- application/json:
85
- schema:
86
- type: object
87
- properties:
88
- message:
89
- type: string
90
- table_name:
91
- type: string
92
- example:
93
- message: "Table created successfully"
94
- tableName: "posts"
95
- '400':
96
- description: Bad request
97
- content:
98
- application/json:
99
- schema:
100
- $ref: '#/components/schemas/ErrorResponse'
101
- example:
102
- error: "VALIDATION_ERROR"
103
- message: "Table name already exists"
104
- statusCode: 400
105
- nextActions: "Choose a different table name"
106
- '422':
107
- description: Unprocessable entity
108
- content:
109
- application/json:
110
- schema:
111
- $ref: '#/components/schemas/ErrorResponse'
112
- example:
113
- error: "INVALID_FIELD_TYPE"
114
- message: "Invalid field type: 'text'. Valid types are: string, integer, float, boolean, datetime, uuid, json, file"
115
- statusCode: 422
116
- nextActions: "Use one of the valid field types"
117
-
118
- /api/database/tables/{tableName}:
119
- get:
120
- summary: Get Table Schema
121
- tags:
122
- - Admin
123
- security:
124
- - bearerAuth: []
125
- - apiKey: []
126
- parameters:
127
- - name: tableName
128
- in: path
129
- required: true
130
- schema:
131
- type: string
132
- responses:
133
- '200':
134
- description: Table schema
135
- content:
136
- application/json:
137
- schema:
138
- type: object
139
- properties:
140
- table_name:
141
- type: string
142
- columns:
143
- type: array
144
- items:
145
- type: object
146
- properties:
147
- name:
148
- type: string
149
- type:
150
- type: string
151
- nullable:
152
- type: boolean
153
- unique:
154
- type: boolean
155
- default:
156
- type: string
157
- nullable: true
158
- isPrimaryKey:
159
- type: boolean
160
- foreignKey:
161
- type: object
162
- nullable: true
163
- properties:
164
- table:
165
- type: string
166
- column:
167
- type: string
168
- on_delete:
169
- type: string
170
- example:
171
- tableName: "posts"
172
- columns:
173
- - name: "id"
174
- type: "uuid"
175
- nullable: false
176
- unique: true
177
- default: "gen_random_uuid()"
178
- isPrimaryKey: true
179
- foreignKey: null
180
- - name: "title"
181
- type: "string"
182
- nullable: false
183
- unique: false
184
- default: null
185
- isPrimaryKey: false
186
- foreignKey: null
187
- - name: "userId"
188
- type: "uuid"
189
- nullable: false
190
- unique: false
191
- default: null
192
- isPrimaryKey: false
193
- foreignKey:
194
- table: "users"
195
- column: "id"
196
- on_delete: "CASCADE"
197
- '404':
198
- description: Table not found
199
- content:
200
- application/json:
201
- schema:
202
- $ref: '#/components/schemas/ErrorResponse'
203
- example:
204
- error: "TABLE_NOT_FOUND"
205
- message: "Table 'nonexistent' does not exist"
206
- statusCode: 404
207
- nextActions: "Check table name and try again"
208
- patch:
209
- summary: Update Table Schema
210
- tags:
211
- - Admin
212
- security:
213
- - bearerAuth: []
214
- - apiKey: []
215
- parameters:
216
- - name: tableName
217
- in: path
218
- required: true
219
- schema:
220
- type: string
221
- requestBody:
222
- required: true
223
- content:
224
- application/json:
225
- schema:
226
- type: object
227
- properties:
228
- addColumns:
229
- type: array
230
- description: Add new columns to the table
231
- items:
232
- type: object
233
- required:
234
- - columnName
235
- - type
236
- properties:
237
- columnName:
238
- type: string
239
- description: Name of the new column
240
- type:
241
- type: string
242
- enum: [string, integer, float, boolean, datetime, uuid, json, file]
243
- description: Data type of the column
244
- isNullable:
245
- type: boolean
246
- default: true
247
- description: Whether the column allows NULL values
248
- isUnique:
249
- type: boolean
250
- default: false
251
- description: Whether the column values must be unique
252
- defaultValue:
253
- type: string
254
- description: Default value for the column
255
- dropColumns:
256
- type: array
257
- description: Remove columns from the table
258
- items:
259
- type: string
260
- description: Name of the column to drop
261
- updateColumns:
262
- type: array
263
- description: Modify existing columns (rename or change default)
264
- items:
265
- type: object
266
- required:
267
- - columnName
268
- properties:
269
- columnName:
270
- type: string
271
- description: Current name of the column
272
- newColumnName:
273
- type: string
274
- description: New name for the column (optional)
275
- minLength: 1
276
- maxLength: 64
277
- defaultValue:
278
- type: string
279
- description: New default value for the column (optional)
280
- addForeignKeys:
281
- type: array
282
- description: Add foreign key constraints to existing columns
283
- items:
284
- type: object
285
- required:
286
- - columnName
287
- - foreignKey
288
- properties:
289
- columnName:
290
- type: string
291
- description: Name of the column to add foreign key to
292
- foreignKey:
293
- type: object
294
- required:
295
- - referenceTable
296
- - referenceColumn
297
- properties:
298
- referenceTable:
299
- type: string
300
- description: Table being referenced
301
- referenceColumn:
302
- type: string
303
- description: Column being referenced
304
- onDelete:
305
- type: string
306
- enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
307
- default: RESTRICT
308
- description: Action on delete
309
- onUpdate:
310
- type: string
311
- enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
312
- default: RESTRICT
313
- description: Action on update
314
- dropForeignKeys:
315
- type: array
316
- description: Remove foreign key constraints from columns
317
- items:
318
- type: string
319
- description: Name of the column with foreign key to drop
320
- renameTable:
321
- type: object
322
- description: Rename the table
323
- required:
324
- - newTableName
325
- properties:
326
- newTableName:
327
- type: string
328
- description: New name for the table
329
- minLength: 1
330
- maxLength: 64
331
- responses:
332
- '200':
333
- description: Table schema updated successfully
334
- content:
335
- application/json:
336
- schema:
337
- type: object
338
- properties:
339
- message:
340
- type: string
341
- description: Success message
342
- tableName:
343
- type: string
344
- description: Name of the updated table
345
- operations:
346
- type: array
347
- description: List of operations performed
348
- items:
349
- type: string
350
- example:
351
- message: "Table schema updated successfully"
352
- tableName: "posts"
353
- operations:
354
- - "added 2 columns"
355
- - "dropped 1 columns"
356
- - "renamed 1 columns"
357
- - "added 1 foreign keys"
358
- - "dropped 1 foreign keys"
359
- '400':
360
- description: Bad request
361
- content:
362
- application/json:
363
- schema:
364
- $ref: '#/components/schemas/ErrorResponse'
365
- examples:
366
- columnExists:
367
- value:
368
- error: "COLUMN_EXISTS"
369
- message: "Column 'title' already exists in table 'posts'"
370
- statusCode: 400
371
- nextActions: "Choose a different column name or drop it first"
372
- columnNotFound:
373
- value:
374
- error: "COLUMN_NOT_FOUND"
375
- message: "Column 'nonexistent' not found in table 'posts'"
376
- statusCode: 400
377
- nextActions: "Check column name with GET /api/tables/{tableName}/schema"
378
- foreignKeyExists:
379
- value:
380
- error: "FOREIGN_KEY_EXISTS"
381
- message: "Foreign key on column 'user_id' already exists"
382
- statusCode: 400
383
- nextActions: "Drop the existing foreign key first or use a different column"
384
- '404':
385
- description: Table not found
386
- content:
387
- application/json:
388
- schema:
389
- $ref: '#/components/schemas/ErrorResponse'
390
- example:
391
- error: "TABLE_NOT_FOUND"
392
- message: "Table 'nonexistent' does not exist"
393
- statusCode: 404
394
- nextActions: "Check table name and try again"
395
- delete:
396
- summary: Delete Table
397
- tags:
398
- - Admin
399
- security:
400
- - bearerAuth: []
401
- - apiKey: []
402
- parameters:
403
- - name: tableName
404
- in: path
405
- required: true
406
- schema:
407
- type: string
408
- responses:
409
- '200':
410
- description: Table deleted
411
- content:
412
- application/json:
413
- schema:
414
- type: object
415
- properties:
416
- message:
417
- type: string
418
- table_name:
419
- type: string
420
- example:
421
- message: "Table deleted successfully"
422
- tableName: "posts"
423
- '404':
424
- description: Table not found
425
- content:
426
- application/json:
427
- schema:
428
- $ref: '#/components/schemas/ErrorResponse'
429
- example:
430
- error: "TABLE_NOT_FOUND"
431
- message: "Table 'nonexistent' does not exist"
432
- statusCode: 404
433
- nextActions: "Check table name and try again"
434
-
435
- components:
436
- securitySchemes:
437
- bearerAuth:
438
- type: http
439
- scheme: bearer
440
- apiKey:
441
- type: apiKey
442
- in: header
443
- name: X-API-Key
444
-
445
- schemas:
446
- ErrorResponse:
447
- type: object
448
- required:
449
- - error
450
- - message
451
- - statusCode
452
- properties:
453
- error:
454
- type: string
455
- description: Error code for programmatic handling
456
- message:
457
- type: string
458
- description: Human-readable error message
459
- statusCode:
460
- type: integer
461
- description: HTTP status code
462
- nextActions:
463
- type: string
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Insforge Tables API
4
+ version: 1.0.0
5
+
6
+ paths:
7
+ /api/database/tables:
8
+ get:
9
+ summary: List Tables
10
+ tags:
11
+ - Admin
12
+ security:
13
+ - bearerAuth: []
14
+ - apiKey: []
15
+ responses:
16
+ '200':
17
+ description: List of table names
18
+ content:
19
+ application/json:
20
+ schema:
21
+ type: array
22
+ items:
23
+ type: string
24
+ example:
25
+ - "posts"
26
+ - "comments"
27
+ - "categories"
28
+
29
+ post:
30
+ summary: Create Table
31
+ tags:
32
+ - Admin
33
+ security:
34
+ - bearerAuth: []
35
+ - apiKey: []
36
+ requestBody:
37
+ required: true
38
+ content:
39
+ application/json:
40
+ schema:
41
+ type: object
42
+ required:
43
+ - tableName
44
+ - columns
45
+ properties:
46
+ tableName:
47
+ type: string
48
+ columns:
49
+ type: array
50
+ items:
51
+ type: object
52
+ required:
53
+ - name
54
+ - type
55
+ - nullable
56
+ properties:
57
+ name:
58
+ type: string
59
+ type:
60
+ type: string
61
+ enum: [string, datetime, integer, float, boolean, uuid, json, file]
62
+ nullable:
63
+ type: boolean
64
+ unique:
65
+ type: boolean
66
+ defaultValue:
67
+ type: string
68
+ foreignKey:
69
+ type: object
70
+ properties:
71
+ table:
72
+ type: string
73
+ column:
74
+ type: string
75
+ onDelete:
76
+ type: string
77
+ enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
78
+ default: NO ACTION
79
+ responses:
80
+ '201':
81
+ description: Table created
82
+ content:
83
+ application/json:
84
+ schema:
85
+ type: object
86
+ properties:
87
+ message:
88
+ type: string
89
+ table_name:
90
+ type: string
91
+ example:
92
+ message: "Table created successfully"
93
+ tableName: "posts"
94
+ '400':
95
+ description: Bad request
96
+ content:
97
+ application/json:
98
+ schema:
99
+ $ref: '#/components/schemas/ErrorResponse'
100
+ example:
101
+ error: "VALIDATION_ERROR"
102
+ message: "Table name already exists"
103
+ statusCode: 400
104
+ nextActions: "Choose a different table name"
105
+ '422':
106
+ description: Unprocessable entity
107
+ content:
108
+ application/json:
109
+ schema:
110
+ $ref: '#/components/schemas/ErrorResponse'
111
+ example:
112
+ error: "INVALID_FIELD_TYPE"
113
+ message: "Invalid field type: 'text'. Valid types are: string, integer, float, boolean, datetime, uuid, json, file"
114
+ statusCode: 422
115
+ nextActions: "Use one of the valid field types"
116
+
117
+ /api/database/tables/{tableName}:
118
+ get:
119
+ summary: Get Table Schema
120
+ tags:
121
+ - Admin
122
+ security:
123
+ - bearerAuth: []
124
+ - apiKey: []
125
+ parameters:
126
+ - name: tableName
127
+ in: path
128
+ required: true
129
+ schema:
130
+ type: string
131
+ responses:
132
+ '200':
133
+ description: Table schema
134
+ content:
135
+ application/json:
136
+ schema:
137
+ type: object
138
+ properties:
139
+ table_name:
140
+ type: string
141
+ columns:
142
+ type: array
143
+ items:
144
+ type: object
145
+ properties:
146
+ name:
147
+ type: string
148
+ type:
149
+ type: string
150
+ nullable:
151
+ type: boolean
152
+ unique:
153
+ type: boolean
154
+ default:
155
+ type: string
156
+ nullable: true
157
+ isPrimaryKey:
158
+ type: boolean
159
+ foreignKey:
160
+ type: object
161
+ nullable: true
162
+ properties:
163
+ table:
164
+ type: string
165
+ column:
166
+ type: string
167
+ on_delete:
168
+ type: string
169
+ example:
170
+ tableName: "posts"
171
+ columns:
172
+ - name: "id"
173
+ type: "uuid"
174
+ nullable: false
175
+ unique: true
176
+ default: "gen_random_uuid()"
177
+ isPrimaryKey: true
178
+ foreignKey: null
179
+ - name: "title"
180
+ type: "string"
181
+ nullable: false
182
+ unique: false
183
+ default: null
184
+ isPrimaryKey: false
185
+ foreignKey: null
186
+ - name: "userId"
187
+ type: "uuid"
188
+ nullable: false
189
+ unique: false
190
+ default: null
191
+ isPrimaryKey: false
192
+ foreignKey:
193
+ table: "auth.users"
194
+ column: "id"
195
+ on_delete: "CASCADE"
196
+ '404':
197
+ description: Table not found
198
+ content:
199
+ application/json:
200
+ schema:
201
+ $ref: '#/components/schemas/ErrorResponse'
202
+ example:
203
+ error: "TABLE_NOT_FOUND"
204
+ message: "Table 'nonexistent' does not exist"
205
+ statusCode: 404
206
+ nextActions: "Check table name and try again"
207
+ patch:
208
+ summary: Update Table Schema
209
+ tags:
210
+ - Admin
211
+ security:
212
+ - bearerAuth: []
213
+ - apiKey: []
214
+ parameters:
215
+ - name: tableName
216
+ in: path
217
+ required: true
218
+ schema:
219
+ type: string
220
+ requestBody:
221
+ required: true
222
+ content:
223
+ application/json:
224
+ schema:
225
+ type: object
226
+ properties:
227
+ addColumns:
228
+ type: array
229
+ description: Add new columns to the table
230
+ items:
231
+ type: object
232
+ required:
233
+ - columnName
234
+ - type
235
+ properties:
236
+ columnName:
237
+ type: string
238
+ description: Name of the new column
239
+ type:
240
+ type: string
241
+ enum: [string, integer, float, boolean, datetime, uuid, json, file]
242
+ description: Data type of the column
243
+ isNullable:
244
+ type: boolean
245
+ default: true
246
+ description: Whether the column allows NULL values
247
+ isUnique:
248
+ type: boolean
249
+ default: false
250
+ description: Whether the column values must be unique
251
+ defaultValue:
252
+ type: string
253
+ description: Default value for the column
254
+ dropColumns:
255
+ type: array
256
+ description: Remove columns from the table
257
+ items:
258
+ type: string
259
+ description: Name of the column to drop
260
+ updateColumns:
261
+ type: array
262
+ description: Modify existing columns (rename or change default)
263
+ items:
264
+ type: object
265
+ required:
266
+ - columnName
267
+ properties:
268
+ columnName:
269
+ type: string
270
+ description: Current name of the column
271
+ newColumnName:
272
+ type: string
273
+ description: New name for the column (optional)
274
+ minLength: 1
275
+ maxLength: 64
276
+ defaultValue:
277
+ type: string
278
+ description: New default value for the column (optional)
279
+ addForeignKeys:
280
+ type: array
281
+ description: Add foreign key constraints to existing columns
282
+ items:
283
+ type: object
284
+ required:
285
+ - columnName
286
+ - foreignKey
287
+ properties:
288
+ columnName:
289
+ type: string
290
+ description: Name of the column to add foreign key to
291
+ foreignKey:
292
+ type: object
293
+ required:
294
+ - referenceTable
295
+ - referenceColumn
296
+ properties:
297
+ referenceTable:
298
+ type: string
299
+ description: Table being referenced
300
+ referenceColumn:
301
+ type: string
302
+ description: Column being referenced
303
+ onDelete:
304
+ type: string
305
+ enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
306
+ default: RESTRICT
307
+ description: Action on delete
308
+ onUpdate:
309
+ type: string
310
+ enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
311
+ default: RESTRICT
312
+ description: Action on update
313
+ dropForeignKeys:
314
+ type: array
315
+ description: Remove foreign key constraints from columns
316
+ items:
317
+ type: string
318
+ description: Name of the column with foreign key to drop
319
+ renameTable:
320
+ type: object
321
+ description: Rename the table
322
+ required:
323
+ - newTableName
324
+ properties:
325
+ newTableName:
326
+ type: string
327
+ description: New name for the table
328
+ minLength: 1
329
+ maxLength: 64
330
+ responses:
331
+ '200':
332
+ description: Table schema updated successfully
333
+ content:
334
+ application/json:
335
+ schema:
336
+ type: object
337
+ properties:
338
+ message:
339
+ type: string
340
+ description: Success message
341
+ tableName:
342
+ type: string
343
+ description: Name of the updated table
344
+ operations:
345
+ type: array
346
+ description: List of operations performed
347
+ items:
348
+ type: string
349
+ example:
350
+ message: "Table schema updated successfully"
351
+ tableName: "posts"
352
+ operations:
353
+ - "added 2 columns"
354
+ - "dropped 1 columns"
355
+ - "renamed 1 columns"
356
+ - "added 1 foreign keys"
357
+ - "dropped 1 foreign keys"
358
+ '400':
359
+ description: Bad request
360
+ content:
361
+ application/json:
362
+ schema:
363
+ $ref: '#/components/schemas/ErrorResponse'
364
+ examples:
365
+ columnExists:
366
+ value:
367
+ error: "COLUMN_EXISTS"
368
+ message: "Column 'title' already exists in table 'posts'"
369
+ statusCode: 400
370
+ nextActions: "Choose a different column name or drop it first"
371
+ columnNotFound:
372
+ value:
373
+ error: "COLUMN_NOT_FOUND"
374
+ message: "Column 'nonexistent' not found in table 'posts'"
375
+ statusCode: 400
376
+ nextActions: "Check column name with GET /api/tables/{tableName}/schema"
377
+ foreignKeyExists:
378
+ value:
379
+ error: "FOREIGN_KEY_EXISTS"
380
+ message: "Foreign key on column 'user_id' already exists"
381
+ statusCode: 400
382
+ nextActions: "Drop the existing foreign key first or use a different column"
383
+ '404':
384
+ description: Table not found
385
+ content:
386
+ application/json:
387
+ schema:
388
+ $ref: '#/components/schemas/ErrorResponse'
389
+ example:
390
+ error: "TABLE_NOT_FOUND"
391
+ message: "Table 'nonexistent' does not exist"
392
+ statusCode: 404
393
+ nextActions: "Check table name and try again"
394
+ delete:
395
+ summary: Delete Table
396
+ tags:
397
+ - Admin
398
+ security:
399
+ - bearerAuth: []
400
+ - apiKey: []
401
+ parameters:
402
+ - name: tableName
403
+ in: path
404
+ required: true
405
+ schema:
406
+ type: string
407
+ responses:
408
+ '200':
409
+ description: Table deleted
410
+ content:
411
+ application/json:
412
+ schema:
413
+ type: object
414
+ properties:
415
+ message:
416
+ type: string
417
+ table_name:
418
+ type: string
419
+ example:
420
+ message: "Table deleted successfully"
421
+ tableName: "posts"
422
+ '404':
423
+ description: Table not found
424
+ content:
425
+ application/json:
426
+ schema:
427
+ $ref: '#/components/schemas/ErrorResponse'
428
+ example:
429
+ error: "TABLE_NOT_FOUND"
430
+ message: "Table 'nonexistent' does not exist"
431
+ statusCode: 404
432
+ nextActions: "Check table name and try again"
433
+
434
+ components:
435
+ securitySchemes:
436
+ bearerAuth:
437
+ type: http
438
+ scheme: bearer
439
+ apiKey:
440
+ type: apiKey
441
+ in: header
442
+ name: X-API-Key
443
+
444
+ schemas:
445
+ ErrorResponse:
446
+ type: object
447
+ required:
448
+ - error
449
+ - message
450
+ - statusCode
451
+ properties:
452
+ error:
453
+ type: string
454
+ description: Error code for programmatic handling
455
+ message:
456
+ type: string
457
+ description: Human-readable error message
458
+ statusCode:
459
+ type: integer
460
+ description: HTTP status code
461
+ nextActions:
462
+ type: string
464
463
  description: Suggested action to resolve the error