From a2fe1ccf24aa3e94958a46447df7fb7774c2b0d9 Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Wed, 20 May 2026 17:23:13 -0700 Subject: [PATCH] feat(sqlserver): flip driver manifest to editing-ready (#149) Closes Phase 2 of the SQL Server driver. Backend + frontend manifest now report the driver as fully editable for INSERT / UPDATE / DELETE on tables (single-PK, composite-PK, and IDENTITY-PK shapes). Changes in src-tauri/src/drivers/sqlserver/mod.rs: - version: 0.1.0 -> 0.2.0 - description: drops '(read-only preview)' suffix - DriverCapabilities.manage_tables: false -> true - DriverCapabilities.readonly: true -> false - module doc comment updated to describe Phase 2 scope - manifest_has_phase1_capabilities renamed to manifest_has_phase2_capabilities; assertions inverted and Phase 3 gates (alter_column, create_foreign_keys) pinned off Frontend mirror in src/hooks/useDrivers.ts (FALLBACK_DRIVERS): - version, description, manage_tables, readonly updated to match the Rust manifest alter_column and create_foreign_keys stay false; DDL generation is Phase 3 work and is unchanged here. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src-tauri/src/drivers/sqlserver/mod.rs | 37 +++++++++++++++++--------- src/hooks/useDrivers.ts | 8 +++--- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src-tauri/src/drivers/sqlserver/mod.rs b/src-tauri/src/drivers/sqlserver/mod.rs index bda6f697..20df9b42 100644 --- a/src-tauri/src/drivers/sqlserver/mod.rs +++ b/src-tauri/src/drivers/sqlserver/mod.rs @@ -1,9 +1,10 @@ //! Microsoft SQL Server driver (built-in). //! -//! Phase 1 scope: read-only preview. `DriverCapabilities.readonly = true` -//! keeps the UI from calling CRUD routes; the trait still requires the methods -//! to exist, so the unimplemented ones return a descriptive error until later -//! days fill them in. +//! Phase 2 scope: editing-ready. `DriverCapabilities.readonly = false` and +//! `manage_tables = true` so the UI exposes INSERT / UPDATE / DELETE routes +//! for tables (single-PK, composite-PK, and IDENTITY-PK shapes). DDL for +//! `alter_column` / `create_foreign_keys` is still gated off — that lands in +//! Phase 3. pub mod extract; pub mod helpers; @@ -39,8 +40,8 @@ impl SqlServerDriver { manifest: PluginManifest { id: "sqlserver".to_string(), name: "SQL Server".to_string(), - version: "0.1.0".to_string(), - description: "Microsoft SQL Server (read-only preview)".to_string(), + version: "0.2.0".to_string(), + description: "Microsoft SQL Server".to_string(), default_port: Some(1433), capabilities: DriverCapabilities { schemas: true, @@ -60,8 +61,8 @@ impl SqlServerDriver { alter_column: false, create_foreign_keys: false, no_connection_required: false, - manage_tables: false, - readonly: true, + manage_tables: true, + readonly: false, }, is_builtin: true, default_username: "sa".to_string(), @@ -572,16 +573,28 @@ mod tests { } #[test] - fn manifest_has_phase1_capabilities() { + fn manifest_has_phase2_capabilities() { let drv = SqlServerDriver::new(); let m = drv.manifest(); assert_eq!(m.id, "sqlserver"); + assert_eq!(m.version, "0.2.0", "Phase 2 bumps the driver version"); assert_eq!(m.default_port, Some(1433)); assert!(m.is_builtin); - assert!(m.capabilities.readonly, "Phase 1 must ship readonly"); assert!( - !m.capabilities.manage_tables, - "Phase 1 must hide CREATE TABLE UI" + !m.capabilities.readonly, + "Phase 2 enables editing (readonly = false)" + ); + assert!( + m.capabilities.manage_tables, + "Phase 2 exposes CREATE TABLE UI (manage_tables = true)" + ); + assert!( + !m.capabilities.alter_column, + "Phase 3 owns ALTER COLUMN — keep gated off" + ); + assert!( + !m.capabilities.create_foreign_keys, + "Phase 3 owns CREATE FOREIGN KEY — keep gated off" ); assert!(m.capabilities.schemas); assert!(m.capabilities.views); diff --git a/src/hooks/useDrivers.ts b/src/hooks/useDrivers.ts index 5bb3f834..f819f04e 100644 --- a/src/hooks/useDrivers.ts +++ b/src/hooks/useDrivers.ts @@ -118,8 +118,8 @@ const FALLBACK_DRIVERS: PluginManifest[] = [ { id: "sqlserver", name: "SQL Server", - version: "0.1.0", - description: "Microsoft SQL Server (read-only preview)", + version: "0.2.0", + description: "Microsoft SQL Server", default_port: 1433, is_builtin: true, default_username: "sa", @@ -141,8 +141,8 @@ const FALLBACK_DRIVERS: PluginManifest[] = [ inline_pk: false, alter_column: false, create_foreign_keys: false, - manage_tables: false, - readonly: true, + manage_tables: true, + readonly: false, }, }, ];