knex_dart_duckdb 0.1.0
knex_dart_duckdb: ^0.1.0 copied to clipboard
DuckDB driver for knex_dart — execute analytical SQL queries against DuckDB using the knex_dart query builder and the dart_duckdb FFI package.
knex_dart_duckdb #
DuckDB driver for knex_dart for in-process analytical SQL workloads.
Installation #
dependencies:
knex_dart_duckdb: ^0.1.0
Quick Start #
import 'package:knex_dart_duckdb/knex_dart_duckdb.dart';
final db = await KnexDuckDB.memory();
// final db = await KnexDuckDB.file('analytics.db');
await db.executeSchema((schema) {
schema.createTable('events', (t) {
t.increments('id');
t.string('name');
t.integer('value');
});
});
await db.insert(
db.queryBuilder().table('events').insert({'name': 'signup', 'value': 1}),
);
final rows = await db.select(
db.queryBuilder().table('events').orderBy('id').limit(10),
);
await db.close();
Platform Requirements #
- Native Dart/Flutter runtime (FFI).
- macOS/Linux/Windows: install
libduckdb(for examplebrew install duckdbon macOS). - Android/iOS: uses the
dart_duckdbplugin runtime. - Browser/Web: not supported by this driver.
Dialect Capabilities #
Based on knex_dart_capabilities (duckdb dialect):
| Capability | Support |
|---|---|
returning |
Yes |
fullOuterJoin |
Yes |
lateralJoin |
Yes |
onConflictMerge |
Yes |
cte |
Yes |
windowFunctions |
Yes |
json |
Yes |
intersectExcept |
Yes |
Known Limitations #
knex_dart_duckdbweb build throwsUnsupportedError(web stub).DuckDBClientis not thread-safe; use one client per isolate.- On desktop/server,
libduckdbmust be discoverable at runtime.