From bce3df549ff4ccc8895697a3222269bd14fc22a4 Mon Sep 17 00:00:00 2001 From: Stefan Majewsky Date: Fri, 10 Apr 2026 14:55:26 +0200 Subject: start reflecting on types to build a query plan --- db.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 db.go (limited to 'db.go') diff --git a/db.go b/db.go new file mode 100644 index 0000000..a511d6f --- /dev/null +++ b/db.go @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2026 Stefan Majewsky +// SPDX-License-Identifier: Apache-2.0 + +package oblast + +import ( + "context" + "database/sql" + "reflect" + "sync" +) + +// DB wraps an [sql.DB] instance for use with Oblast's query interface. +type DB struct { + *sql.DB + dialect Dialect + plans map[reflect.Type]plan + planMutex sync.Mutex +} + +func NewDB(db *sql.DB, dialect Dialect) *DB { + return &DB{ + DB: db, + dialect: dialect, + plans: make(map[reflect.Type]plan), + } +} + +func Keks[T IsTable](ctx context.Context, db *DB) error { + _, err := db.getPlan(reflect.TypeFor[T]()) + return err +} + +// TODO: Begin() -> custom Tx type -- cgit v1.2.3