dimgigov
ae2e07e626
feat(clients): professional clients with tests, CI/CD, and examples
...
- Python: pyproject.toml, pytest suite (unit + integration), README, examples
- JavaScript: package.json, TypeScript definitions, node:test suite, README, examples
- Nim: integration tests, examples, README, improved nimble tasks
- Rust: fixed nodelay/localhost IPv6 bug, integration tests, examples, README
- Added GitHub Actions CI for all 4 clients against Docker server
- Added docker-compose.test.yml for local integration testing
- Added .gitignore for each client
2026-05-08 00:18:34 +03:00
dimgigov
abb382c419
feat(clients): sync all client drivers with current wire protocol
...
- Python: fix column types read order, add auth/ping/query_params, proper recv
- JavaScript: wire up real TCP socket, add auth/ping/query_params, WireValue class
- Rust: add WireValue enum with structured types, fix type fidelity for ARRAY/OBJECT/VECTOR, add auth/query_params, fix ping/error parsing
- Nim: add missing MsgKind values, makeQueryParamsMessage, auth/ping, fix forward decl
All clients now support AUTH (0x09), QUERY_PARAMS (0x03), PING (0x08)
and align with server.nim + wire.nim protocol definitions.
2026-05-07 22:38:09 +03:00
dimgigov
eaa5760fd4
feat: JSON/JSONB validation, multi-column indexes, CTE execution, wire protocol column types
...
- Add fkJson to wire protocol with serialization/deserialization
- Validate JSON/JSONB on INSERT/UPDATE via std/json
- Send real column type metadata in wire protocol responses
- Update all 4 clients (Nim, Python, JS, Rust) for JSON and columnTypes
- Implement multi-column index parser (CREATE INDEX idx ON t(a, b))
- Add ciColumns to AST nkCreateIndex
- Build composite index keys as table.col1.col2 with val1|val2
- Support multi-column exact match in SELECT for AND chains
- Implement non-recursive CTE execution via ctx.cteTables materialization
- Add tkRecursive token and parse WITH RECURSIVE
- Fix test isolation: use temp dirs for JOIN, migration, and RLS tests
- All tests passing (0 failures)
2026-05-07 10:27:40 +03:00
dimgigov
9b7ed1fca8
chore: change default ports to non-standard ones (9472, 9470, 9471)
2026-05-06 23:23:29 +03:00
dimgigov
f9f77b3a18
feat: production blockers — JOINs, deadlock detection, TLS, parameterized queries
...
- JOIN execution: INNER/LEFT/RIGHT/FULL/CROSS with column disambiguation
- Deadlock detection: wait-for graph wired into TxnManager.write()
- TLS/SSL: OpenSSL via std/net for TCP wire protocol, auto self-signed certs
- Parameterized queries: ? placeholders with WireValue binding
- Wire protocol: mkQueryParams message support
- HTTP /query endpoint accepts JSON params array
- Nim client: query(sql, params) overload
- Tests: 262 passing (15 new)
All PLAN.md production blockers resolved.
2026-05-06 16:42:53 +03:00
dimgigov
c6de13ef7a
feat: standalone Nim client package (baradb) with nimble + 16 tests
...
Standalone Nim client ():
- Self-contained: no dependency on BaraDB server code
- Inlined wire protocol with full serialization (int32/64, float64, string, bytes, array, object)
- Async client (connect/close/query/exec/ping)
- Sync wrapper (newSyncClient)
- Fluent QueryBuilder (select/from/where/join/groupBy/having/orderBy/limit)
- Nimble package file for ecosystem (nimble install baradb)
- 16 passing tests covering: QueryBuilder (6), Config (3), Wire protocol (5), Client (2)
Also has Python + JS clients with identical API
2026-05-06 02:32:01 +03:00