@libredb/studio 0.9.7
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.
- package/.claude/settings.local.json +127 -0
- package/.cursorrules +426 -0
- package/.devin/wiki.json +143 -0
- package/.dockerignore +80 -0
- package/.env.example +159 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +49 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +57 -0
- package/.github/workflows/ci.yml +185 -0
- package/.github/workflows/codeql.yml +57 -0
- package/.github/workflows/docker-build-push.yml +118 -0
- package/.github/workflows/helm-release.yml +113 -0
- package/CLAUDE.md +265 -0
- package/CODE_OF_CONDUCT.md +124 -0
- package/CONTRIBUTING.md +154 -0
- package/Dockerfile +73 -0
- package/LICENSE +21 -0
- package/README.md +614 -0
- package/SECURITY.md +107 -0
- package/artifacthub-repo.yml +4 -0
- package/bun.lock +1714 -0
- package/bunfig.toml +3 -0
- package/charts/libredb-studio/.helmignore +11 -0
- package/charts/libredb-studio/Chart.lock +6 -0
- package/charts/libredb-studio/Chart.yaml +50 -0
- package/charts/libredb-studio/README.md +206 -0
- package/charts/libredb-studio/templates/NOTES.txt +59 -0
- package/charts/libredb-studio/templates/_helpers.tpl +135 -0
- package/charts/libredb-studio/templates/configmap.yaml +37 -0
- package/charts/libredb-studio/templates/deployment.yaml +184 -0
- package/charts/libredb-studio/templates/hpa.yaml +32 -0
- package/charts/libredb-studio/templates/ingress.yaml +41 -0
- package/charts/libredb-studio/templates/networkpolicy.yaml +50 -0
- package/charts/libredb-studio/templates/pdb.yaml +18 -0
- package/charts/libredb-studio/templates/pvc.yaml +23 -0
- package/charts/libredb-studio/templates/secret.yaml +30 -0
- package/charts/libredb-studio/templates/seed-configmap.yaml +11 -0
- package/charts/libredb-studio/templates/service.yaml +22 -0
- package/charts/libredb-studio/templates/serviceaccount.yaml +13 -0
- package/charts/libredb-studio/values.schema.json +246 -0
- package/charts/libredb-studio/values.yaml +286 -0
- package/components.json +22 -0
- package/conductor/code_styleguides/typescript.md +43 -0
- package/conductor/product-guidelines.md +43 -0
- package/conductor/product.md +3 -0
- package/conductor/setup_state.json +1 -0
- package/conductor/tech-stack.md +39 -0
- package/conductor/tracks/enhance_postgres_monitoring_20251227/metadata.json +8 -0
- package/conductor/tracks/enhance_postgres_monitoring_20251227/plan.md +44 -0
- package/conductor/tracks/enhance_postgres_monitoring_20251227/spec.md +31 -0
- package/conductor/tracks.md +8 -0
- package/conductor/workflow.md +333 -0
- package/database-compose.yml +55 -0
- package/docker/postgres-init/01-extensions.sql +10 -0
- package/docker/postgres-init/02-sample-data.sql +585 -0
- package/docker/postgres.yml +68 -0
- package/docker-compose.yml +38 -0
- package/docs/AI_PLAN.md +74 -0
- package/docs/API_DOCS.md +875 -0
- package/docs/ARCHITECTURE.md +218 -0
- package/docs/DATABASE_PROVIDERS.md +358 -0
- package/docs/FEATURES.md +116 -0
- package/docs/HELM_CHART.md +252 -0
- package/docs/LOGIN_PAGE.md +178 -0
- package/docs/MONACO_EDITOR_PERFORMANCE.md +315 -0
- package/docs/OIDC_ARCH.md +681 -0
- package/docs/OIDC_SETUP.md +322 -0
- package/docs/POSTGRES_METRICS.md +516 -0
- package/docs/QUERY_OPTIMIZATION.md +370 -0
- package/docs/SEED_CONNECTIONS.md +468 -0
- package/docs/SQL_ALIAS_COMPLETION.md +190 -0
- package/docs/STORAGE_ARCHITECTURE.md +565 -0
- package/docs/STORAGE_QUICK_SETUP.md +419 -0
- package/docs/TECHNICAL_PLAN.md +36 -0
- package/docs/THEMING.md +345 -0
- package/docs/adding-a-new-database-provider.md +642 -0
- package/docs/backlogs/000-PLATFORM_DATA_SYNC_DATABASE.md +360 -0
- package/docs/backlogs/001-INLINE_DATA_EDITING.md +118 -0
- package/docs/backlogs/002-DATA_IMPORT.md +215 -0
- package/docs/backlogs/003-QUERY_TIME_MACHINE.md +183 -0
- package/docs/backlogs/004-AI_DATA_STORYTELLER.md +292 -0
- package/docs/backlogs/005-QUERY_PLAYGROUND.md +352 -0
- package/docs/backlogs/006-DATA_MASKING.md +418 -0
- package/docs/enterprise-features.md +718 -0
- package/docs/kubernetes-helm-chart-artifacthub-plan.md +803 -0
- package/docs/medium-koyeb-article-en.md +215 -0
- package/docs/plans/test-plans.md +445 -0
- package/docs/releases/RELEASE.V0.3.0.md +22 -0
- package/docs/releases/RELEASE.V0.4.0.md +154 -0
- package/docs/releases/RELEASE.V0.5.0.md +252 -0
- package/docs/releases/RELEASE_v0.5.6.md +145 -0
- package/docs/releases/RELEASE_v0.6.1.md +303 -0
- package/docs/releases/RELEASE_v0.6.7.md +292 -0
- package/docs/releases/RELEASE_v0.7.0.md +332 -0
- package/docs/releases/RELEASE_v0.8.0.md +521 -0
- package/docs/sampledb/titanic.sql +1379 -0
- package/docs/superpowers/plans/2026-03-25-seed-connections.md +1362 -0
- package/docs/superpowers/specs/2026-03-25-seed-connections-design.md +590 -0
- package/e2e/admin-dashboard.spec.ts +64 -0
- package/e2e/connection-management.spec.ts +58 -0
- package/e2e/export.spec.ts +34 -0
- package/e2e/login.spec.ts +85 -0
- package/e2e/query-execution.spec.ts +35 -0
- package/e2e/tab-management.spec.ts +64 -0
- package/eslint.config.mjs +28 -0
- package/fly.toml +43 -0
- package/next.config.ts +32 -0
- package/package.json +130 -0
- package/playwright.config.ts +34 -0
- package/postcss.config.mjs +7 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/logo.svg +32 -0
- package/public/next.svg +1 -0
- package/public/screenshots/code-generator.png +0 -0
- package/public/screenshots/connection-modal.png +0 -0
- package/public/screenshots/data-profiler.png +0 -0
- package/public/screenshots/erd-diagram.png +0 -0
- package/public/screenshots/hero-editor.png +0 -0
- package/public/screenshots/nl2sql.png +0 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/render.yaml +58 -0
- package/scripts/merge-lcov.mjs +239 -0
- package/sonar-project.properties +16 -0
- package/src/app/admin/error.tsx +46 -0
- package/src/app/admin/page.tsx +10 -0
- package/src/app/api/admin/audit/route.ts +52 -0
- package/src/app/api/admin/fleet-health/route.ts +81 -0
- package/src/app/api/ai/autopilot/route.ts +105 -0
- package/src/app/api/ai/chat/route.ts +132 -0
- package/src/app/api/ai/describe-schema/route.ts +52 -0
- package/src/app/api/ai/explain/route.ts +86 -0
- package/src/app/api/ai/impact/route.ts +97 -0
- package/src/app/api/ai/index-advisor/route.ts +98 -0
- package/src/app/api/ai/nl2sql/route.ts +87 -0
- package/src/app/api/ai/query-safety/route.ts +87 -0
- package/src/app/api/auth/login/route.ts +62 -0
- package/src/app/api/auth/logout/route.ts +25 -0
- package/src/app/api/auth/me/route.ts +10 -0
- package/src/app/api/auth/oidc/callback/route.ts +82 -0
- package/src/app/api/auth/oidc/login/route.ts +43 -0
- package/src/app/api/connections/managed/route.ts +35 -0
- package/src/app/api/db/cancel/route.ts +42 -0
- package/src/app/api/db/disconnect/route.ts +28 -0
- package/src/app/api/db/health/route.ts +49 -0
- package/src/app/api/db/maintenance/route.ts +72 -0
- package/src/app/api/db/monitoring/route.ts +62 -0
- package/src/app/api/db/multi-query/route.ts +116 -0
- package/src/app/api/db/pool-stats/route.ts +37 -0
- package/src/app/api/db/profile/route.ts +144 -0
- package/src/app/api/db/provider-meta/route.ts +49 -0
- package/src/app/api/db/query/route.ts +50 -0
- package/src/app/api/db/schema/route.ts +47 -0
- package/src/app/api/db/schema-snapshot/route.ts +42 -0
- package/src/app/api/db/test-connection/route.ts +55 -0
- package/src/app/api/db/transaction/route.ts +111 -0
- package/src/app/api/storage/[collection]/route.ts +67 -0
- package/src/app/api/storage/config/route.ts +17 -0
- package/src/app/api/storage/migrate/route.ts +45 -0
- package/src/app/api/storage/route.ts +32 -0
- package/src/app/error.tsx +49 -0
- package/src/app/global-error.tsx +55 -0
- package/src/app/globals.css +146 -0
- package/src/app/icon.svg +42 -0
- package/src/app/layout.tsx +34 -0
- package/src/app/login/login-form.tsx +301 -0
- package/src/app/login/page.tsx +11 -0
- package/src/app/monitoring/page.tsx +8 -0
- package/src/app/not-found.tsx +29 -0
- package/src/app/page.tsx +5 -0
- package/src/components/AIAutopilotPanel.tsx +238 -0
- package/src/components/CodeGenerator.tsx +271 -0
- package/src/components/CommandPalette.tsx +227 -0
- package/src/components/ConnectionModal.tsx +759 -0
- package/src/components/CreateTableModal.tsx +281 -0
- package/src/components/DataCharts.tsx +962 -0
- package/src/components/DataImportModal.tsx +582 -0
- package/src/components/DataProfiler.tsx +335 -0
- package/src/components/DatabaseDocs.tsx +251 -0
- package/src/components/MaskingSettings.tsx +414 -0
- package/src/components/MobileNav.tsx +50 -0
- package/src/components/NL2SQLPanel.tsx +281 -0
- package/src/components/PivotTable.tsx +257 -0
- package/src/components/QueryEditor.tsx +760 -0
- package/src/components/QueryHistory.tsx +344 -0
- package/src/components/QuerySafetyDialog.tsx +290 -0
- package/src/components/ResultsGrid.tsx +644 -0
- package/src/components/SaveQueryModal.tsx +104 -0
- package/src/components/SavedQueries.tsx +128 -0
- package/src/components/SchemaDiagram.tsx +473 -0
- package/src/components/SchemaDiff.tsx +473 -0
- package/src/components/SnapshotTimeline.tsx +116 -0
- package/src/components/Studio.tsx +639 -0
- package/src/components/TestDataGenerator.tsx +261 -0
- package/src/components/VisualExplain.tsx +820 -0
- package/src/components/admin/AdminDashboard.tsx +163 -0
- package/src/components/admin/tabs/AuditTab.tsx +531 -0
- package/src/components/admin/tabs/MonitoringEmbed.tsx +11 -0
- package/src/components/admin/tabs/OperationsTab.tsx +646 -0
- package/src/components/admin/tabs/OverviewTab.tsx +1328 -0
- package/src/components/admin/tabs/SecurityTab.tsx +284 -0
- package/src/components/community-section.tsx +92 -0
- package/src/components/icons/db-icons.tsx +84 -0
- package/src/components/libredb-logo.tsx +61 -0
- package/src/components/monitoring/MonitoringDashboard.tsx +345 -0
- package/src/components/monitoring/tabs/MetricChart.tsx +82 -0
- package/src/components/monitoring/tabs/OverviewTab.tsx +263 -0
- package/src/components/monitoring/tabs/PerformanceTab.tsx +254 -0
- package/src/components/monitoring/tabs/PoolTab.tsx +174 -0
- package/src/components/monitoring/tabs/QueriesTab.tsx +287 -0
- package/src/components/monitoring/tabs/SessionsTab.tsx +316 -0
- package/src/components/monitoring/tabs/StorageTab.tsx +335 -0
- package/src/components/monitoring/tabs/TablesTab.tsx +300 -0
- package/src/components/results-grid/ResultCard.tsx +111 -0
- package/src/components/results-grid/RowDetailSheet.tsx +178 -0
- package/src/components/results-grid/StatsBar.tsx +201 -0
- package/src/components/results-grid/index.ts +1 -0
- package/src/components/results-grid/utils.ts +23 -0
- package/src/components/schema-explorer/ColumnList.tsx +53 -0
- package/src/components/schema-explorer/SchemaExplorer.tsx +182 -0
- package/src/components/schema-explorer/TableItem.tsx +210 -0
- package/src/components/schema-explorer/index.ts +1 -0
- package/src/components/sidebar/ConnectionItem.tsx +105 -0
- package/src/components/sidebar/ConnectionsList.tsx +62 -0
- package/src/components/sidebar/Sidebar.tsx +130 -0
- package/src/components/sidebar/index.ts +2 -0
- package/src/components/studio/BottomPanel.tsx +286 -0
- package/src/components/studio/QueryToolbar.tsx +180 -0
- package/src/components/studio/StudioDesktopHeader.tsx +114 -0
- package/src/components/studio/StudioMobileHeader.tsx +340 -0
- package/src/components/studio/StudioTabBar.tsx +82 -0
- package/src/components/studio/index.ts +5 -0
- package/src/components/ui/accordion.tsx +66 -0
- package/src/components/ui/alert-dialog.tsx +157 -0
- package/src/components/ui/alert.tsx +66 -0
- package/src/components/ui/aspect-ratio.tsx +11 -0
- package/src/components/ui/avatar.tsx +53 -0
- package/src/components/ui/badge.tsx +46 -0
- package/src/components/ui/breadcrumb.tsx +109 -0
- package/src/components/ui/button-group.tsx +83 -0
- package/src/components/ui/button.tsx +60 -0
- package/src/components/ui/calendar.tsx +216 -0
- package/src/components/ui/card.tsx +92 -0
- package/src/components/ui/carousel.tsx +241 -0
- package/src/components/ui/chart.tsx +357 -0
- package/src/components/ui/checkbox.tsx +32 -0
- package/src/components/ui/collapsible.tsx +33 -0
- package/src/components/ui/command.tsx +184 -0
- package/src/components/ui/context-menu.tsx +252 -0
- package/src/components/ui/dialog.tsx +143 -0
- package/src/components/ui/drawer.tsx +135 -0
- package/src/components/ui/dropdown-menu.tsx +257 -0
- package/src/components/ui/empty.tsx +104 -0
- package/src/components/ui/field.tsx +248 -0
- package/src/components/ui/form.tsx +167 -0
- package/src/components/ui/hover-card.tsx +44 -0
- package/src/components/ui/input-group.tsx +170 -0
- package/src/components/ui/input-otp.tsx +77 -0
- package/src/components/ui/input.tsx +21 -0
- package/src/components/ui/item.tsx +193 -0
- package/src/components/ui/kbd.tsx +28 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/menubar.tsx +276 -0
- package/src/components/ui/navigation-menu.tsx +168 -0
- package/src/components/ui/pagination.tsx +127 -0
- package/src/components/ui/popover.tsx +48 -0
- package/src/components/ui/progress.tsx +31 -0
- package/src/components/ui/radio-group.tsx +45 -0
- package/src/components/ui/resizable.tsx +56 -0
- package/src/components/ui/scroll-area.tsx +58 -0
- package/src/components/ui/select.tsx +187 -0
- package/src/components/ui/separator.tsx +28 -0
- package/src/components/ui/sheet.tsx +139 -0
- package/src/components/ui/sidebar.tsx +726 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/slider.tsx +63 -0
- package/src/components/ui/sonner.tsx +40 -0
- package/src/components/ui/spinner.tsx +16 -0
- package/src/components/ui/switch.tsx +31 -0
- package/src/components/ui/table.tsx +116 -0
- package/src/components/ui/tabs.tsx +66 -0
- package/src/components/ui/textarea.tsx +18 -0
- package/src/components/ui/toggle-group.tsx +83 -0
- package/src/components/ui/toggle.tsx +47 -0
- package/src/components/ui/tooltip.tsx +61 -0
- package/src/exports/components.ts +15 -0
- package/src/exports/index.ts +4 -0
- package/src/exports/providers.ts +4 -0
- package/src/exports/types.ts +26 -0
- package/src/hooks/use-ai-chat.ts +182 -0
- package/src/hooks/use-all-connections.ts +66 -0
- package/src/hooks/use-api-call.ts +71 -0
- package/src/hooks/use-auth.ts +51 -0
- package/src/hooks/use-connection-form.ts +349 -0
- package/src/hooks/use-connection-manager.ts +169 -0
- package/src/hooks/use-connection-payload.ts +15 -0
- package/src/hooks/use-inline-editing.ts +109 -0
- package/src/hooks/use-mobile.ts +20 -0
- package/src/hooks/use-monitoring-data.ts +270 -0
- package/src/hooks/use-provider-metadata.ts +62 -0
- package/src/hooks/use-query-execution.ts +478 -0
- package/src/hooks/use-storage-sync.ts +259 -0
- package/src/hooks/use-tab-manager.ts +231 -0
- package/src/hooks/use-toast.ts +20 -0
- package/src/hooks/use-transaction-control.ts +64 -0
- package/src/lib/api/error-codes.ts +30 -0
- package/src/lib/api/errors.ts +236 -0
- package/src/lib/api/with-error-handler.ts +41 -0
- package/src/lib/audit.ts +105 -0
- package/src/lib/auth.ts +87 -0
- package/src/lib/connection-string-parser.ts +172 -0
- package/src/lib/data-masking.ts +385 -0
- package/src/lib/db/base-provider.ts +325 -0
- package/src/lib/db/errors.ts +317 -0
- package/src/lib/db/factory.ts +324 -0
- package/src/lib/db/index.ts +123 -0
- package/src/lib/db/providers/document/index.ts +6 -0
- package/src/lib/db/providers/document/mongodb.ts +992 -0
- package/src/lib/db/providers/keyvalue/redis.ts +554 -0
- package/src/lib/db/providers/sql/index.ts +11 -0
- package/src/lib/db/providers/sql/mssql.ts +1065 -0
- package/src/lib/db/providers/sql/mysql.ts +978 -0
- package/src/lib/db/providers/sql/oracle.ts +1044 -0
- package/src/lib/db/providers/sql/postgres.ts +1179 -0
- package/src/lib/db/providers/sql/sql-base.ts +174 -0
- package/src/lib/db/providers/sql/sqlite.ts +721 -0
- package/src/lib/db/types.ts +437 -0
- package/src/lib/db/utils/pool-manager.ts +287 -0
- package/src/lib/db/utils/query-limiter.ts +239 -0
- package/src/lib/db-ui-config.ts +86 -0
- package/src/lib/editor/mongodb-completions.ts +172 -0
- package/src/lib/editor/sql-completions.ts +280 -0
- package/src/lib/llm/base-provider.ts +117 -0
- package/src/lib/llm/factory.ts +102 -0
- package/src/lib/llm/index.ts +90 -0
- package/src/lib/llm/providers/custom.ts +181 -0
- package/src/lib/llm/providers/gemini.ts +126 -0
- package/src/lib/llm/providers/ollama.ts +154 -0
- package/src/lib/llm/providers/openai.ts +146 -0
- package/src/lib/llm/types.ts +173 -0
- package/src/lib/llm/utils/config.ts +187 -0
- package/src/lib/llm/utils/retry.ts +119 -0
- package/src/lib/llm/utils/streaming.ts +202 -0
- package/src/lib/logger.ts +127 -0
- package/src/lib/monitoring-thresholds.ts +44 -0
- package/src/lib/oidc.ts +262 -0
- package/src/lib/query-generators.ts +61 -0
- package/src/lib/schema-diff/diff-engine.ts +273 -0
- package/src/lib/schema-diff/migration-generator.ts +208 -0
- package/src/lib/schema-diff/types.ts +55 -0
- package/src/lib/seed/config-loader.ts +79 -0
- package/src/lib/seed/connection-filter.ts +49 -0
- package/src/lib/seed/credential-resolver.ts +62 -0
- package/src/lib/seed/index.ts +40 -0
- package/src/lib/seed/resolve-connection.ts +57 -0
- package/src/lib/seed/types.ts +69 -0
- package/src/lib/sql/alias-extractor.ts +267 -0
- package/src/lib/sql/index.ts +8 -0
- package/src/lib/sql/statement-splitter.ts +167 -0
- package/src/lib/sql/types.ts +40 -0
- package/src/lib/ssh/tunnel.ts +142 -0
- package/src/lib/storage/factory.ts +84 -0
- package/src/lib/storage/index.ts +14 -0
- package/src/lib/storage/local-storage.ts +99 -0
- package/src/lib/storage/providers/postgres.ts +225 -0
- package/src/lib/storage/providers/sqlite.ts +153 -0
- package/src/lib/storage/storage-facade.ts +272 -0
- package/src/lib/storage/types.ts +75 -0
- package/src/lib/time-series-buffer.ts +58 -0
- package/src/lib/types.ts +173 -0
- package/src/lib/utils.ts +6 -0
- package/src/proxy.ts +104 -0
- package/src/types/db-drivers.d.ts +23 -0
- package/src/types/html2canvas.d.ts +9 -0
- package/tests/api/admin/audit.test.ts +178 -0
- package/tests/api/admin/fleet-health.test.ts +183 -0
- package/tests/api/ai/autopilot.test.ts +174 -0
- package/tests/api/ai/chat.test.ts +250 -0
- package/tests/api/ai/describe-schema.test.ts +266 -0
- package/tests/api/ai/explain.test.ts +199 -0
- package/tests/api/ai/impact.test.ts +168 -0
- package/tests/api/ai/index-advisor.test.ts +171 -0
- package/tests/api/ai/nl2sql.test.ts +202 -0
- package/tests/api/ai/query-safety.test.ts +196 -0
- package/tests/api/auth/login.test.ts +170 -0
- package/tests/api/auth/logout.test.ts +140 -0
- package/tests/api/auth/me.test.ts +73 -0
- package/tests/api/auth/oidc-callback.test.ts +215 -0
- package/tests/api/auth/oidc-login.test.ts +127 -0
- package/tests/api/db/cancel.test.ts +198 -0
- package/tests/api/db/disconnect.test.ts +124 -0
- package/tests/api/db/health.test.ts +222 -0
- package/tests/api/db/maintenance.test.ts +263 -0
- package/tests/api/db/monitoring.test.ts +221 -0
- package/tests/api/db/multi-query.test.ts +316 -0
- package/tests/api/db/pool-stats.test.ts +135 -0
- package/tests/api/db/profile.test.ts +330 -0
- package/tests/api/db/provider-meta.test.ts +193 -0
- package/tests/api/db/query.test.ts +314 -0
- package/tests/api/db/schema-snapshot.test.ts +170 -0
- package/tests/api/db/schema.test.ts +191 -0
- package/tests/api/db/test-connection.test.ts +185 -0
- package/tests/api/db/transaction.test.ts +314 -0
- package/tests/api/proxy.test.ts +191 -0
- package/tests/api/seed/managed-route.test.ts +113 -0
- package/tests/api/storage/config.test.ts +42 -0
- package/tests/api/storage/storage-routes.test.ts +309 -0
- package/tests/components/AIAutopilotPanel.test.tsx +756 -0
- package/tests/components/AdminPage.test.tsx +33 -0
- package/tests/components/CodeGenerator.test.tsx +182 -0
- package/tests/components/CommandPalette.test.tsx +428 -0
- package/tests/components/CommunitySection.test.tsx +91 -0
- package/tests/components/ConnectionModal.mobile.test.tsx +284 -0
- package/tests/components/ConnectionModal.test.tsx +570 -0
- package/tests/components/CreateTableModal.test.tsx +383 -0
- package/tests/components/DataCharts.test.tsx +739 -0
- package/tests/components/DataImportModal.test.tsx +751 -0
- package/tests/components/DataProfiler.test.tsx +589 -0
- package/tests/components/DatabaseDocs.test.tsx +353 -0
- package/tests/components/LoginPage.test.tsx +163 -0
- package/tests/components/LoginPageOIDC.test.tsx +92 -0
- package/tests/components/MaskingSettings.test.tsx +498 -0
- package/tests/components/MobileNav.test.tsx +30 -0
- package/tests/components/MonitoringPage.test.tsx +32 -0
- package/tests/components/NL2SQLPanel.test.tsx +621 -0
- package/tests/components/Page.test.tsx +33 -0
- package/tests/components/PivotTable.test.tsx +350 -0
- package/tests/components/QueryEditor.test.tsx +1730 -0
- package/tests/components/QueryHistory.test.tsx +572 -0
- package/tests/components/QuerySafetyDialog.test.tsx +586 -0
- package/tests/components/ResultsGrid.test.tsx +804 -0
- package/tests/components/RootLayout.test.tsx +83 -0
- package/tests/components/SaveQueryModal.test.tsx +25 -0
- package/tests/components/SavedQueries.test.tsx +43 -0
- package/tests/components/SchemaDiagram.test.tsx +1034 -0
- package/tests/components/SchemaDiff.test.tsx +906 -0
- package/tests/components/SnapshotTimeline.test.tsx +174 -0
- package/tests/components/Studio.test.tsx +1030 -0
- package/tests/components/TestDataGenerator.test.tsx +291 -0
- package/tests/components/VisualExplain.test.tsx +704 -0
- package/tests/components/admin/AdminDashboard.test.tsx +205 -0
- package/tests/components/admin/AuditTab.test.tsx +220 -0
- package/tests/components/admin/MonitoringEmbed.test.tsx +58 -0
- package/tests/components/admin/OperationsTab.test.tsx +975 -0
- package/tests/components/admin/OverviewTab.test.tsx +254 -0
- package/tests/components/admin/SecurityTab.test.tsx +467 -0
- package/tests/components/monitoring/MetricChart.test.tsx +111 -0
- package/tests/components/monitoring/MonitoringDashboard.test.tsx +259 -0
- package/tests/components/monitoring/OverviewTab.test.tsx +78 -0
- package/tests/components/monitoring/PerformanceTab.test.tsx +87 -0
- package/tests/components/monitoring/PoolTab.test.tsx +42 -0
- package/tests/components/monitoring/QueriesTab.test.tsx +80 -0
- package/tests/components/monitoring/SessionsTab.test.tsx +154 -0
- package/tests/components/monitoring/StorageTab.test.tsx +127 -0
- package/tests/components/monitoring/TablesTab.test.tsx +153 -0
- package/tests/components/results-grid/ResultCard.test.tsx +105 -0
- package/tests/components/results-grid/RowDetailSheet.test.tsx +308 -0
- package/tests/components/results-grid/StatsBar.test.tsx +162 -0
- package/tests/components/schema-explorer/ColumnList.test.tsx +151 -0
- package/tests/components/schema-explorer/SchemaExplorer.test.tsx +461 -0
- package/tests/components/schema-explorer/TableItem.test.tsx +415 -0
- package/tests/components/sidebar/ConnectionItem.test.tsx +201 -0
- package/tests/components/sidebar/ConnectionsList.test.tsx +176 -0
- package/tests/components/sidebar/Sidebar.test.tsx +187 -0
- package/tests/components/studio/BottomPanel.test.tsx +383 -0
- package/tests/components/studio/QueryToolbar.test.tsx +321 -0
- package/tests/components/studio/StudioDesktopHeader.test.tsx +377 -0
- package/tests/components/studio/StudioMobileHeader.test.tsx +198 -0
- package/tests/components/studio/StudioTabBar.test.tsx +331 -0
- package/tests/fixtures/connections.ts +96 -0
- package/tests/fixtures/masking-configs.ts +86 -0
- package/tests/fixtures/query-results.ts +71 -0
- package/tests/fixtures/schemas.ts +64 -0
- package/tests/fixtures/seed-connections/invalid-config.yaml +7 -0
- package/tests/fixtures/seed-connections/minimal-config.yaml +8 -0
- package/tests/fixtures/seed-connections/mixed-credentials.yaml +23 -0
- package/tests/fixtures/seed-connections/multi-role-config.yaml +30 -0
- package/tests/fixtures/seed-connections/valid-config.json +15 -0
- package/tests/fixtures/seed-connections/valid-config.yaml +51 -0
- package/tests/helpers/mock-fetch.ts +59 -0
- package/tests/helpers/mock-monaco.ts +112 -0
- package/tests/helpers/mock-navigation.ts +28 -0
- package/tests/helpers/mock-next.ts +80 -0
- package/tests/helpers/mock-provider.ts +133 -0
- package/tests/helpers/mock-sonner.ts +29 -0
- package/tests/helpers/render-with-providers.tsx +19 -0
- package/tests/hooks/use-ai-chat.test.ts +600 -0
- package/tests/hooks/use-auth.test.ts +371 -0
- package/tests/hooks/use-connection-form.test.ts +743 -0
- package/tests/hooks/use-connection-manager.test.ts +466 -0
- package/tests/hooks/use-inline-editing.test.ts +321 -0
- package/tests/hooks/use-mobile.test.ts +177 -0
- package/tests/hooks/use-monitoring-data.test.ts +819 -0
- package/tests/hooks/use-provider-metadata.test.ts +228 -0
- package/tests/hooks/use-query-execution.test.ts +1212 -0
- package/tests/hooks/use-tab-manager.test.ts +756 -0
- package/tests/hooks/use-toast.test.ts +74 -0
- package/tests/hooks/use-transaction-control.test.ts +211 -0
- package/tests/integration/db/mongodb-provider.test.ts +698 -0
- package/tests/integration/db/mssql-provider.test.ts +840 -0
- package/tests/integration/db/mysql-provider.test.ts +872 -0
- package/tests/integration/db/oracle-provider.test.ts +843 -0
- package/tests/integration/db/postgres-provider.test.ts +1382 -0
- package/tests/integration/db/redis-provider.test.ts +526 -0
- package/tests/integration/db/sqlite-provider.test.ts +480 -0
- package/tests/integration/seed/seed-pipeline.test.ts +102 -0
- package/tests/isolated/factory-singleton.test.ts +150 -0
- package/tests/isolated/use-storage-sync.test.ts +389 -0
- package/tests/run-components.sh +196 -0
- package/tests/setup-dom.ts +58 -0
- package/tests/setup.ts +40 -0
- package/tests/unit/api-errors.test.ts +210 -0
- package/tests/unit/code-generator-functions.test.ts +271 -0
- package/tests/unit/components/column-list.test.tsx +190 -0
- package/tests/unit/components/data-import-modal.test.tsx +441 -0
- package/tests/unit/components/studio-mobile-header.test.tsx +327 -0
- package/tests/unit/data-charts-functions.test.ts +496 -0
- package/tests/unit/data-import-functions.test.ts +320 -0
- package/tests/unit/data-import-utils.test.ts +125 -0
- package/tests/unit/db/base-provider.test.ts +517 -0
- package/tests/unit/db/errors.test.ts +403 -0
- package/tests/unit/db/factory.test.ts +436 -0
- package/tests/unit/db/pool-manager.test.ts +440 -0
- package/tests/unit/db/query-limiter.test.ts +387 -0
- package/tests/unit/db/sql-base.test.ts +438 -0
- package/tests/unit/lib/api/error-codes.test.ts +39 -0
- package/tests/unit/lib/audit.test.ts +326 -0
- package/tests/unit/lib/auth.test.ts +146 -0
- package/tests/unit/lib/connection-string-parser.test.ts +424 -0
- package/tests/unit/lib/data-masking.test.ts +583 -0
- package/tests/unit/lib/db-icons.test.tsx +41 -0
- package/tests/unit/lib/monitoring-thresholds.test.ts +133 -0
- package/tests/unit/lib/oidc.test.ts +509 -0
- package/tests/unit/lib/query-generators.test.ts +127 -0
- package/tests/unit/lib/storage/factory.test.ts +71 -0
- package/tests/unit/lib/storage/local-storage.test.ts +114 -0
- package/tests/unit/lib/storage/providers/postgres.test.ts +312 -0
- package/tests/unit/lib/storage/providers/sqlite.test.ts +232 -0
- package/tests/unit/lib/storage/storage-facade-extended.test.ts +331 -0
- package/tests/unit/lib/storage/storage-facade.test.ts +184 -0
- package/tests/unit/lib/storage.test.ts +317 -0
- package/tests/unit/lib/time-series-buffer.test.ts +212 -0
- package/tests/unit/lib/utils.test.ts +24 -0
- package/tests/unit/llm/base-provider.test.ts +238 -0
- package/tests/unit/llm/config.test.ts +262 -0
- package/tests/unit/llm/custom-provider.test.ts +281 -0
- package/tests/unit/llm/gemini-provider.test.ts +248 -0
- package/tests/unit/llm/llm-factory.test.ts +155 -0
- package/tests/unit/llm/ollama-provider.test.ts +288 -0
- package/tests/unit/llm/openai-provider.test.ts +324 -0
- package/tests/unit/llm/retry.test.ts +180 -0
- package/tests/unit/llm/streaming.test.ts +355 -0
- package/tests/unit/logger.test.ts +198 -0
- package/tests/unit/mongodb-completions.test.ts +516 -0
- package/tests/unit/pivot-table-functions.test.ts +76 -0
- package/tests/unit/query-cancelled-error.test.ts +81 -0
- package/tests/unit/schema-diff/diff-engine.test.ts +367 -0
- package/tests/unit/schema-diff/migration-generator.test.ts +513 -0
- package/tests/unit/seed/config-loader.test.ts +73 -0
- package/tests/unit/seed/connection-filter.test.ts +91 -0
- package/tests/unit/seed/credential-resolver.test.ts +85 -0
- package/tests/unit/seed/index.test.ts +72 -0
- package/tests/unit/seed/resolve-connection.test.ts +74 -0
- package/tests/unit/seed/types.test.ts +129 -0
- package/tests/unit/sql/alias-extractor.test.ts +444 -0
- package/tests/unit/sql/statement-splitter.test.ts +348 -0
- package/tests/unit/sql-completions.test.ts +463 -0
- package/tests/unit/ssh-tunnel.test.ts +465 -0
- package/tsconfig.json +42 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Release V0.3.0 - Modern SQL Console & Database Maintenance
|
|
2
|
+
|
|
3
|
+
## Improvements
|
|
4
|
+
|
|
5
|
+
### 1. Modern SQL Query Console
|
|
6
|
+
- **Run Selected:** Added the ability to execute only the selected text in the Monaco Editor.
|
|
7
|
+
- **Smart Statement Detection:** If no text is selected, the editor automatically detects and executes the SQL statement under the cursor (delimited by semicolons).
|
|
8
|
+
- **Visual Feedback:** Executed statements are briefly highlighted in the editor for clear feedback.
|
|
9
|
+
- **Keyboard Shortcuts:** Added `Ctrl+Enter` to run queries and `Alt+Shift+F` for formatting.
|
|
10
|
+
- **Context Menu:** Integrated SQL actions into the editor's right-click menu.
|
|
11
|
+
|
|
12
|
+
### 2. Advanced SQL Formatting
|
|
13
|
+
- **Tabular Layout:** Improved SQL formatting with a professional tabular layout for better readability.
|
|
14
|
+
- **Keyword Standardizing:** Automatic conversion of keywords and data types to uppercase.
|
|
15
|
+
- **Improved Logic Layout:** Logical operators (AND, OR) are now placed at the start of lines for clearer complex queries.
|
|
16
|
+
|
|
17
|
+
### 3. Database Exploration & Maintenance
|
|
18
|
+
- **Schema Exploration:** Enhanced tools for exploring database tables, columns, and relationships.
|
|
19
|
+
- **Maintenance Tasks:** Added initial support for database maintenance operations via backend API.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
Date: 2025-12-23
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Release V0.4.0 - Mobile-First UX & AI Query Assistant
|
|
2
|
+
|
|
3
|
+
**Release Date:** 2025-12-23
|
|
4
|
+
|
|
5
|
+
This release focuses on delivering a premium mobile experience and integrating AI-powered query assistance with multi-provider LLM support.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Highlights
|
|
10
|
+
|
|
11
|
+
- **Complete Mobile Redesign** - Touch-optimized UI with bottom navigation
|
|
12
|
+
- **AI Query Assistant** - Natural language to SQL with Gemini, OpenAI, Ollama support
|
|
13
|
+
- **Hybrid Results View** - Card & table views with smart column detection
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## New Features
|
|
18
|
+
|
|
19
|
+
### 1. Mobile-First Navigation System
|
|
20
|
+
|
|
21
|
+
#### Bottom Navigation Bar
|
|
22
|
+
- Added fixed bottom navigation with three tabs: **DB**, **Schema**, **SQL**
|
|
23
|
+
- Smooth tab transitions with visual active state indicators
|
|
24
|
+
- Touch-friendly 16px safe area for gesture navigation
|
|
25
|
+
|
|
26
|
+
#### Compact Two-Row Header
|
|
27
|
+
- **Row 1:** Database dropdown selector, connection status, health toggle, user menu
|
|
28
|
+
- **Row 2:** AI assistant button, quick actions menu, RUN button
|
|
29
|
+
- Eliminated redundant toolbars for maximum screen real estate
|
|
30
|
+
|
|
31
|
+
#### Database Quick Switcher
|
|
32
|
+
- Dropdown selector for instant database switching
|
|
33
|
+
- Visual indicator for active connection
|
|
34
|
+
- Add new connection directly from dropdown
|
|
35
|
+
|
|
36
|
+
### 2. AI Query Assistant (Multi-Provider)
|
|
37
|
+
|
|
38
|
+
#### Supported Providers
|
|
39
|
+
| Provider | Model | Use Case |
|
|
40
|
+
|----------|-------|----------|
|
|
41
|
+
| **Gemini** | gemini-2.5-flash | Cloud - Fast & accurate |
|
|
42
|
+
| **OpenAI** | gpt-4o | Cloud - Advanced reasoning |
|
|
43
|
+
| **Ollama** | llama3, codellama | Local - Privacy-first |
|
|
44
|
+
| **Custom** | Any OpenAI-compatible | Self-hosted LLMs |
|
|
45
|
+
|
|
46
|
+
#### Features
|
|
47
|
+
- **Natural Language to SQL** - Describe what you need, get executable SQL
|
|
48
|
+
- **Schema-Aware Prompting** - AI knows your tables and columns
|
|
49
|
+
- **Streaming Responses** - Real-time token streaming
|
|
50
|
+
- **Floating Input** - Non-intrusive collapsible interface
|
|
51
|
+
- **One-Click Apply** - Insert generated SQL directly into editor
|
|
52
|
+
|
|
53
|
+
#### Configuration
|
|
54
|
+
```env
|
|
55
|
+
LLM_PROVIDER=gemini # gemini | openai | ollama | custom
|
|
56
|
+
LLM_API_KEY=your_api_key # Required for cloud providers
|
|
57
|
+
LLM_MODEL=gemini-2.5-flash # Model name
|
|
58
|
+
LLM_API_URL= # Required for ollama/custom
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 3. Mobile Results View
|
|
62
|
+
|
|
63
|
+
#### Card View (Default)
|
|
64
|
+
- Each row displayed as a touch-friendly card
|
|
65
|
+
- **Smart Primary Column Detection** - Automatically identifies name/title/email fields
|
|
66
|
+
- Preview of first 4 fields with full data on tap
|
|
67
|
+
- Virtualized scrolling for performance with large datasets
|
|
68
|
+
|
|
69
|
+
#### Table View (Toggle)
|
|
70
|
+
- **Sticky First Column** - ID/primary column stays visible while scrolling
|
|
71
|
+
- Horizontal scroll with shadow indicator
|
|
72
|
+
- Minimum 120px column width for readability
|
|
73
|
+
- Tap row to view full details
|
|
74
|
+
|
|
75
|
+
#### Row Detail Bottom Sheet
|
|
76
|
+
- Full-screen sheet (85vh) with all row data
|
|
77
|
+
- Field-by-field copy buttons
|
|
78
|
+
- **Copy as JSON** - Export entire row
|
|
79
|
+
- Smooth gesture-based dismiss
|
|
80
|
+
|
|
81
|
+
### 4. Mobile Quick Actions
|
|
82
|
+
|
|
83
|
+
Consolidated toolbar actions into a single dropdown menu:
|
|
84
|
+
- **Format SQL** - Auto-format with Shift+Alt+F
|
|
85
|
+
- **Copy Query** - Copy current query to clipboard
|
|
86
|
+
- **Clear** - Reset editor content
|
|
87
|
+
- **Save Query** - Save to local storage
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Improvements
|
|
92
|
+
|
|
93
|
+
### UI/UX Enhancements
|
|
94
|
+
- Hidden desktop-only toolbars on mobile for cleaner interface
|
|
95
|
+
- Query tabs hidden on mobile (single-tab focus)
|
|
96
|
+
- Responsive stats bar with execution time on desktop only
|
|
97
|
+
- Type-aware cell coloring (numbers: amber, booleans: green/red, null: gray)
|
|
98
|
+
|
|
99
|
+
### Performance
|
|
100
|
+
- Virtualized card list for thousands of rows
|
|
101
|
+
- Optimized re-renders with proper memoization
|
|
102
|
+
- Lazy loading for mobile views
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Technical Details
|
|
107
|
+
|
|
108
|
+
### New Components
|
|
109
|
+
- `MobileNav` - Bottom navigation component
|
|
110
|
+
- `ResultCard` - Card view for result rows
|
|
111
|
+
- `RowDetailSheet` - Bottom sheet for row details
|
|
112
|
+
|
|
113
|
+
### Modified Components
|
|
114
|
+
- `Studio.tsx` - Mobile header, DB selector, tab routing
|
|
115
|
+
- `ResultsGrid.tsx` - Hybrid card/table view with toggle
|
|
116
|
+
- `QueryEditor.tsx` - Hidden toolbar on mobile
|
|
117
|
+
|
|
118
|
+
### New Dependencies
|
|
119
|
+
- No new dependencies added
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Migration Notes
|
|
124
|
+
|
|
125
|
+
### Environment Variables
|
|
126
|
+
Add the following to `.env.local` for AI features:
|
|
127
|
+
```env
|
|
128
|
+
LLM_PROVIDER=gemini
|
|
129
|
+
LLM_API_KEY=your_gemini_api_key
|
|
130
|
+
LLM_MODEL=gemini-2.5-flash
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Breaking Changes
|
|
134
|
+
- None. Fully backward compatible.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## What's Next (V0.5.0)
|
|
139
|
+
|
|
140
|
+
- [ ] AI-powered query error fixing
|
|
141
|
+
- [ ] Query explanation with AI
|
|
142
|
+
- [ ] Offline mode with local storage sync
|
|
143
|
+
- [ ] PWA support for mobile installation
|
|
144
|
+
- [ ] Swipe gestures for card actions
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Contributors
|
|
149
|
+
|
|
150
|
+
- Mobile UX redesign and AI integration by the LibreDB team
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
**Full Changelog:** [V0.3.0...V0.4.0](https://github.com/your-repo/compare/v0.3.0...v0.4.0)
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Release v0.5.0 - Database Provider Architecture & MongoDB Support
|
|
2
|
+
|
|
3
|
+
**Release Date:** December 2024
|
|
4
|
+
|
|
5
|
+
This release introduces a major architectural refactoring of the database provider system using the Strategy Pattern, along with full MongoDB support.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Highlights
|
|
10
|
+
|
|
11
|
+
- **New Architecture:** Modular, extensible database provider system
|
|
12
|
+
- **MongoDB Support:** Full document database support with JSON-based queries
|
|
13
|
+
- **SQLBaseProvider:** Shared utilities for SQL databases
|
|
14
|
+
- **Improved Maintainability:** Clear separation of concerns by database category
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## New Features
|
|
19
|
+
|
|
20
|
+
### MongoDB Support
|
|
21
|
+
|
|
22
|
+
Full MongoDB integration with the official `mongodb` driver:
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
const connection = {
|
|
26
|
+
id: 'my-mongo',
|
|
27
|
+
name: 'MongoDB Atlas',
|
|
28
|
+
type: 'mongodb',
|
|
29
|
+
connectionString: 'mongodb+srv://user:pass@cluster.mongodb.net/mydb',
|
|
30
|
+
createdAt: new Date(),
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const provider = await getOrCreateProvider(connection);
|
|
34
|
+
const result = await provider.query(JSON.stringify({
|
|
35
|
+
collection: 'users',
|
|
36
|
+
operation: 'find',
|
|
37
|
+
filter: { status: 'active' },
|
|
38
|
+
options: { limit: 50 }
|
|
39
|
+
}));
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Supported Operations:**
|
|
43
|
+
- `find`, `findOne` - Query documents
|
|
44
|
+
- `aggregate` - Aggregation pipelines
|
|
45
|
+
- `count`, `distinct` - Count and distinct queries
|
|
46
|
+
- `insertOne`, `insertMany` - Insert documents
|
|
47
|
+
- `updateOne`, `updateMany` - Update documents
|
|
48
|
+
- `deleteOne`, `deleteMany` - Delete documents
|
|
49
|
+
|
|
50
|
+
**MongoDB Features:**
|
|
51
|
+
- Connection pooling
|
|
52
|
+
- Automatic schema inference from documents
|
|
53
|
+
- Index listing
|
|
54
|
+
- Health monitoring with profiler integration
|
|
55
|
+
- Maintenance operations (compact, validate, reIndex)
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Architecture Changes
|
|
60
|
+
|
|
61
|
+
### New Directory Structure
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
src/lib/db/
|
|
65
|
+
├── index.ts # Public exports
|
|
66
|
+
├── types.ts # Interfaces & Types
|
|
67
|
+
├── errors.ts # Custom error classes
|
|
68
|
+
├── factory.ts # Provider Factory
|
|
69
|
+
├── base-provider.ts # Abstract base class
|
|
70
|
+
├── providers/
|
|
71
|
+
│ ├── sql/ # SQL Database Providers
|
|
72
|
+
│ │ ├── index.ts
|
|
73
|
+
│ │ ├── sql-base.ts # SQL-specific base class (NEW)
|
|
74
|
+
│ │ ├── postgres.ts
|
|
75
|
+
│ │ ├── mysql.ts
|
|
76
|
+
│ │ └── sqlite.ts
|
|
77
|
+
│ ├── document/ # Document Database Providers (NEW)
|
|
78
|
+
│ │ ├── index.ts
|
|
79
|
+
│ │ └── mongodb.ts # MongoDB Provider (NEW)
|
|
80
|
+
│ └── demo.ts
|
|
81
|
+
└── utils/
|
|
82
|
+
└── pool-manager.ts
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Provider Hierarchy
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
BaseDatabaseProvider (abstract)
|
|
89
|
+
├── SQLBaseProvider (abstract) ─────────────┐
|
|
90
|
+
│ ├── PostgresProvider │ SQL Databases
|
|
91
|
+
│ ├── MySQLProvider │ (shared utilities)
|
|
92
|
+
│ └── SQLiteProvider │
|
|
93
|
+
├── MongoDBProvider ────────────────────────┤ Document Databases
|
|
94
|
+
└── DemoProvider ───────────────────────────┘ Mock/Testing
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### SQLBaseProvider
|
|
98
|
+
|
|
99
|
+
New abstract class with SQL-specific shared utilities:
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
abstract class SQLBaseProvider extends BaseDatabaseProvider {
|
|
103
|
+
// SQL-specific utilities
|
|
104
|
+
protected escapeIdentifier(identifier: string): string;
|
|
105
|
+
protected escapeString(value: string): string;
|
|
106
|
+
protected buildLimitClause(limit: number, offset?: number): string;
|
|
107
|
+
protected getPlaceholder(index: number): string;
|
|
108
|
+
protected shouldEnableSSL(): boolean;
|
|
109
|
+
protected isReadOnlyQuery(sql: string): boolean;
|
|
110
|
+
protected isSchemaModifyingQuery(sql: string): boolean;
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Supported Databases
|
|
117
|
+
|
|
118
|
+
| Category | Database | Status | Driver | Pooling |
|
|
119
|
+
|----------|------------|--------|------------------|---------|
|
|
120
|
+
| SQL | PostgreSQL | Full | `pg` | Yes |
|
|
121
|
+
| SQL | MySQL | Full | `mysql2` | Yes |
|
|
122
|
+
| SQL | SQLite | Full | `better-sqlite3` | No |
|
|
123
|
+
| Document | MongoDB | Full | `mongodb` | Yes |
|
|
124
|
+
| Other | Demo | Full | Mock data | N/A |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Breaking Changes
|
|
129
|
+
|
|
130
|
+
None. All existing APIs remain compatible.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Bug Fixes
|
|
135
|
+
|
|
136
|
+
- Fixed `idx.columns.join is not a function` error in SchemaExplorer when PostgreSQL returns null for empty index columns
|
|
137
|
+
- Fixed `col.primaryKey` property name to `col.isPrimary` in SchemaDiagram component
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Dependencies
|
|
142
|
+
|
|
143
|
+
### Added
|
|
144
|
+
- `mongodb@7.0.0` - Official MongoDB driver
|
|
145
|
+
|
|
146
|
+
### Existing
|
|
147
|
+
- `pg` - PostgreSQL driver
|
|
148
|
+
- `mysql2` - MySQL driver
|
|
149
|
+
- `better-sqlite3` - SQLite driver
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Documentation
|
|
154
|
+
|
|
155
|
+
- Updated `docs/DATABASE_PROVIDERS.md` with:
|
|
156
|
+
- New architecture diagram
|
|
157
|
+
- MongoDB query format and examples
|
|
158
|
+
- Guide for adding new providers
|
|
159
|
+
- Provider-specific features
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Migration Guide
|
|
164
|
+
|
|
165
|
+
### For Users
|
|
166
|
+
|
|
167
|
+
No migration required. Existing connections continue to work.
|
|
168
|
+
|
|
169
|
+
### For Developers
|
|
170
|
+
|
|
171
|
+
If you have custom code extending database providers:
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
// Before (v0.4.x)
|
|
175
|
+
import { PostgresProvider } from '@/lib/db/providers/postgres';
|
|
176
|
+
|
|
177
|
+
// After (v0.5.0)
|
|
178
|
+
import { PostgresProvider } from '@/lib/db/providers/sql/postgres';
|
|
179
|
+
// or
|
|
180
|
+
import { PostgresProvider } from '@/lib/db';
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Adding New Providers
|
|
186
|
+
|
|
187
|
+
### SQL Database (e.g., Oracle)
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// src/lib/db/providers/sql/oracle.ts
|
|
191
|
+
import { SQLBaseProvider } from './sql-base';
|
|
192
|
+
|
|
193
|
+
export class OracleProvider extends SQLBaseProvider {
|
|
194
|
+
// Inherit SQL utilities, implement abstract methods
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Document Database (e.g., Couchbase)
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// src/lib/db/providers/document/couchbase.ts
|
|
202
|
+
import { BaseDatabaseProvider } from '../../base-provider';
|
|
203
|
+
|
|
204
|
+
export class CouchbaseProvider extends BaseDatabaseProvider {
|
|
205
|
+
// Implement all abstract methods
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## What's Next
|
|
212
|
+
|
|
213
|
+
### v0.6.0 (Planned)
|
|
214
|
+
- MongoDB UI improvements (JSON editor, collection explorer)
|
|
215
|
+
- Redis support (Key-Value category)
|
|
216
|
+
- Query builder for MongoDB
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Contributors
|
|
221
|
+
|
|
222
|
+
- Database architecture refactoring
|
|
223
|
+
- MongoDB provider implementation
|
|
224
|
+
- Documentation updates
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Full Changelog
|
|
229
|
+
|
|
230
|
+
### Added
|
|
231
|
+
- `SQLBaseProvider` abstract class for SQL databases
|
|
232
|
+
- `MongoDBProvider` for document database support
|
|
233
|
+
- `providers/sql/` directory for SQL providers
|
|
234
|
+
- `providers/document/` directory for document providers
|
|
235
|
+
- MongoDB query parsing and execution
|
|
236
|
+
- MongoDB schema inference from documents
|
|
237
|
+
- MongoDB health monitoring
|
|
238
|
+
- MongoDB maintenance operations
|
|
239
|
+
|
|
240
|
+
### Changed
|
|
241
|
+
- Moved PostgreSQL provider to `providers/sql/postgres.ts`
|
|
242
|
+
- Moved MySQL provider to `providers/sql/mysql.ts`
|
|
243
|
+
- Moved SQLite provider to `providers/sql/sqlite.ts`
|
|
244
|
+
- Updated factory to use new provider locations
|
|
245
|
+
- Updated index exports for new structure
|
|
246
|
+
|
|
247
|
+
### Fixed
|
|
248
|
+
- `idx.columns.join is not a function` in SchemaExplorer
|
|
249
|
+
- `col.primaryKey` → `col.isPrimary` in SchemaDiagram
|
|
250
|
+
|
|
251
|
+
### Removed
|
|
252
|
+
- Old provider files from `providers/` root (moved to `providers/sql/`)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# LibreDB Studio v0.5.6 - Initial Stable Release
|
|
2
|
+
|
|
3
|
+
We are excited to announce the first public release of **LibreDB Studio** — a modern, blazing-fast SQL IDE for the cloud era.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What is LibreDB Studio?
|
|
8
|
+
|
|
9
|
+
LibreDB Studio is an open-source, web-based SQL editor designed for cloud-native teams. It bridges the gap between heavyweight desktop applications and minimal CLI tools, offering a professional database management experience accessible from any browser.
|
|
10
|
+
|
|
11
|
+
**Live Demo:** [app.libredb.org](https://app.libredb.org)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Core Features
|
|
16
|
+
|
|
17
|
+
### Mobile-First, Professional-Always
|
|
18
|
+
- Fully responsive design optimized for phones, tablets, and desktops
|
|
19
|
+
- Run SQL queries from your phone while on-call or away from your desk
|
|
20
|
+
- Touch-friendly interface with native-like experience on mobile browsers
|
|
21
|
+
- No app installation required — just open your browser and connect
|
|
22
|
+
|
|
23
|
+
### All-in-One Architecture
|
|
24
|
+
- Single Docker image contains everything: frontend, backend, and API
|
|
25
|
+
- No separate services to configure or maintain
|
|
26
|
+
- Deploy once, connect to any database in your private network
|
|
27
|
+
- Zero external dependencies — runs completely self-contained
|
|
28
|
+
|
|
29
|
+
### Cloud-Native Deployment
|
|
30
|
+
- Docker-ready with optimized multi-stage builds
|
|
31
|
+
- Kubernetes compatible with health check endpoints
|
|
32
|
+
- Horizontal scaling support via stateless JWT architecture
|
|
33
|
+
- Perfect for private network database management
|
|
34
|
+
|
|
35
|
+
### Multi-Database Support
|
|
36
|
+
- **PostgreSQL** — Full support including maintenance operations
|
|
37
|
+
- **MySQL** — Query execution and schema exploration
|
|
38
|
+
- **SQLite** — Lightweight database support
|
|
39
|
+
- **MongoDB** — Document database with JSON query interface
|
|
40
|
+
- **Demo Mode** — Try the IDE without a real database
|
|
41
|
+
|
|
42
|
+
### Professional SQL Editor
|
|
43
|
+
- Monaco Editor (VS Code engine) with syntax highlighting
|
|
44
|
+
- Schema-aware autocomplete for tables, columns, and keywords
|
|
45
|
+
- Multi-tab workspace with independent execution states
|
|
46
|
+
- Query formatting and keyboard shortcuts
|
|
47
|
+
|
|
48
|
+
### AI-Powered Query Assistant
|
|
49
|
+
- Natural language to SQL generation
|
|
50
|
+
- Multi-provider support: Gemini, OpenAI, Ollama, or custom endpoints
|
|
51
|
+
- Schema-aware context for accurate query suggestions
|
|
52
|
+
- Streaming responses for real-time feedback
|
|
53
|
+
|
|
54
|
+
### High-Performance Data Grid
|
|
55
|
+
- Virtualized rendering for large datasets (TanStack)
|
|
56
|
+
- Inline cell editing with instant updates
|
|
57
|
+
- One-click export to CSV and JSON
|
|
58
|
+
- Column sorting and resizing
|
|
59
|
+
|
|
60
|
+
### DBA Maintenance Toolkit
|
|
61
|
+
- Live connection monitoring and session management
|
|
62
|
+
- One-click VACUUM, ANALYZE, and REINDEX operations
|
|
63
|
+
- Query history with full audit trail
|
|
64
|
+
- Database health metrics and statistics
|
|
65
|
+
|
|
66
|
+
### Enterprise Ready
|
|
67
|
+
- JWT-based authentication with role-based access control
|
|
68
|
+
- Admin and User roles with granular permissions
|
|
69
|
+
- Secure HTTP-only cookie session management
|
|
70
|
+
- Built-in query auditing and history tracking
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Tech Stack
|
|
75
|
+
|
|
76
|
+
| Layer | Technology |
|
|
77
|
+
|-------|------------|
|
|
78
|
+
| Frontend | Next.js 15, React 19, TypeScript |
|
|
79
|
+
| Styling | Tailwind CSS 4, Shadcn/UI, Radix UI |
|
|
80
|
+
| Editor | Monaco Editor |
|
|
81
|
+
| Data Grid | TanStack Table + React Virtual |
|
|
82
|
+
| AI | Multi-model (Gemini, OpenAI, Ollama) |
|
|
83
|
+
| Auth | JWT with HTTP-only cookies |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Quick Start
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Clone the repository
|
|
91
|
+
git clone https://github.com/libredb/libredb-studio.git
|
|
92
|
+
cd libredb-studio
|
|
93
|
+
|
|
94
|
+
# Install dependencies
|
|
95
|
+
bun install
|
|
96
|
+
|
|
97
|
+
# Configure environment
|
|
98
|
+
cp .env.example .env.local
|
|
99
|
+
# Edit .env.local with your settings
|
|
100
|
+
|
|
101
|
+
# Start development server
|
|
102
|
+
bun dev
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Open [http://localhost:3000](http://localhost:3000) and connect to your database.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Deployment
|
|
110
|
+
|
|
111
|
+
### Docker
|
|
112
|
+
```bash
|
|
113
|
+
docker-compose up -d
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Render (One-Click)
|
|
117
|
+
[](https://render.com/deploy?repo=https://github.com/libredb/libredb-studio)
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Documentation
|
|
122
|
+
|
|
123
|
+
- [API Documentation](./API_DOCS.md)
|
|
124
|
+
- [Contributing Guide](../CONTRIBUTING.md)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## What's Next
|
|
129
|
+
|
|
130
|
+
- Interactive ER Diagrams
|
|
131
|
+
- Advanced Mobile SQL Keyboard
|
|
132
|
+
- SSO Integration (OIDC/SAML)
|
|
133
|
+
- Query result visualization charts
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Links
|
|
138
|
+
|
|
139
|
+
- **Repository:** [github.com/libredb/libredb-studio](https://github.com/libredb/libredb-studio)
|
|
140
|
+
- **Live Demo:** [app.libredb.org](https://app.libredb.org)
|
|
141
|
+
- **License:** MIT
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
Thank you for trying LibreDB Studio. We welcome contributions and feedback from the community.
|