Skip to content

feat: add Microsoft Access driver with ODBC support and update skill references - #9

Open
Esteban040404 wants to merge 1 commit into
mainfrom
feat/access-driver
Open

feat: add Microsoft Access driver with ODBC support and update skill references#9
Esteban040404 wants to merge 1 commit into
mainfrom
feat/access-driver

Conversation

@Esteban040404

Copy link
Copy Markdown
Collaborator

Summary

  • Add AccessDriver implementing the full IDatabaseDriver interface via the odbc npm package
  • Register "access" as a supported engine in factory.ts (SupportedDbType)
  • Update SKILL.md to reflect all four supported engines (PostgreSQL, MySQL, SQLite, Access) including a feature support matrix
  • Add engine-specific reference files: mysql.md, sqlite.md, access.md
  • Expand tools-reference.md with per-engine behavior notes for schema param, alterTable, createView, dropIndex, and
    createTrigger

Technical Notes

Driver (src/drivers/access.ts)

  • Uses the odbc package (ODBC bridge); Windows-only at runtime — requires the Microsoft Access Database Engine 2016
    Redistributable or an Office installation
  • Accepts a file path (.accdb / .mdb) and auto-constructs the ODBC connection string: Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=<path>; also accepts full ODBC strings or DSN names
  • Identifier quoting uses square brackets [name] (JET SQL convention)
  • listIndexes / dropIndex use statistics() via a typed runtime cast — the odbc package does not expose this catalog method
    in its TypeScript definitions, but the underlying ODBC driver supports it; the call is wrapped in try/catch per table
  • dropIndex searches all tables to find the owning table (required by JET's DROP INDEX [name] ON [table] syntax)
  • createView / dropView silently drop before recreating — JET SQL has no CREATE OR REPLACE VIEW
  • dropTable is wrapped in try/catch (JET has no DROP TABLE IF EXISTS)
  • Unsupported features throw descriptive errors: schemas, triggers, functions, extensions, sequences, roles/grants
    (Access workgroup security is deprecated in .accdb)
  • renameTo in alterTable throws — JET SQL has no RENAME TABLE; workaround documented in access.md
  • Soft delete must be handled at the application layer (no SQL triggers in Access)

Skill updates

  • SKILL.md description and engine notes updated; added Engine Support Matrix table and connection string examples per engine
  • tools-reference.md now documents how the schema parameter maps per engine and per-engine behavior differences for key tools
  • mysql.md, sqlite.md, access.md are new reference files following the same structure as postgres.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants