const c = @cImport({ @cInclude("duckdb.h"); }); const Connection = struct { _conn: c.duckdb_connection, pub fn init(db: Self) !Connection{ var conn: Connection = undefined; if( c.duckdb_connect(db._db, &conn._conn) == c.DuckDBError ){ return error.DuckDBError; } return conn; } pub fn deinit(self: *Connection) void{ c.duckdb_disconnect(&self._conn); } }; pub const Self = @This(); _db: c.duckdb_database, pub fn init(file: [*c]const u8) !Self{ var db : Self = undefined; if (c.duckdb_open(file, &db._db) == c.DuckDBError) { return error.DuckDBError; } return db; } pub fn deinit(self: *Self) void{ c.duckdb_close(&self._db); } pub fn connect(self: Self) !Connection { return Connection.init(self); }