OOro

Driver Adapters

Driver, Dialect, Inspector, Capabilities, and Logger interfaces.

Oro driver packages are adapters around database/sql. They provide dialect behavior, schema inspection, error mapping, and connection configuration. They do not register concrete SQL drivers by themselves.

Official adapters

import (
    "github.com/duxweb/oro/driver/mysql"
    "github.com/duxweb/oro/driver/pgsql"
    "github.com/duxweb/oro/driver/sqlite"

    _ "github.com/go-sql-driver/mysql"
    _ "github.com/jackc/pgx/v5/stdlib"
    _ "modernc.org/sqlite"
)

Driver boundary

A driver supplies:

  • connection opening through database/sql;
  • a dialect for SQL placeholders, quoting, returning, locks, and upsert syntax;
  • an inspector for schema sync;
  • capability flags;
  • database-specific error normalization.

Third-party SQL adapters

Third-party packages can implement oro.Driver and expose their own Open(...) function:

func Open(dsn string, options ...Option) oro.Driver {
    return &Driver{dsn: dsn, options: options}
}

The ORM core handles query building and execution. The adapter handles database-specific syntax and schema metadata.

Non-SQL databases

A MongoDB-style adapter is not just a dialect swap because query semantics, joins, transactions, schema sync, and scanning differ significantly. Oro’s public Driver interface is intended for SQL-compatible backends.

DSN and options

Official adapters accept a DSN string plus typed options. This matches common Go database drivers while leaving room for adapter-specific configuration.

sqlite.Open("app.db")
mysql.Open("user:pass@tcp(localhost:3306)/app?parseTime=true")
pgsql.Open("postgres://root@localhost:5432/app?sslmode=disable")
Edit this page