KenanBek / KenanBek/dbui

Dialect registry with typed ResultSet (single generic adapter)

Open
#72 0 comments 0 reactions 0 assignees View on GitHub
area:core
Dominant language
Go
Stars
218
Forks
14
PR merge metrics
No merged PRs in 30d

Description

Replace the three copy-paste drivers with one generic database/sql adapter + per-engine Dialect (identifier quote rune, metadata SQL, capabilities) and a registry keyed by type (controller switch dies; new engine ~= 30-line dialect + suite pass). Native return type: ResultSet with column names, driver type metadata, per-cell NULL flags, bounded row cap with "more rows" indicator — `[][]*string` dies. Per-dialect identifier quoting everywhere (kills the fmt.Sprintf injection surface). pgx/v5 (stdlib mode) swap lands here. Postgres metadata corrected at driver level (pg_namespace/current_database(), schema-qualified quoted identifiers) within the existing 3-level nav; the db->schema->table navigation change ships with the v1.1 port. rows.Err() checked; scan errors no longer swallowed. Streaming/paged fetch deferred to v1.1 (its only consumer is the virtualized grid).

**Acceptance:** acceptance suite green across engines incl. new weird-identifier cases (mixed-case, dash, reserved-word); NULL rendered distinctly from empty string.

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing three copy-paste drivers and the controller switch, then trace the current three-level database navigation. Run the acceptance suite across the supported engines, including mixed-case, dashed, and reserved-word identifiers. Done means the suite is green, NULL is distinct from an empty string, and row, scan, and identifier-handling requirements are covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, mysql, postgresql, sqlite
Domain
cli, database
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.