Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
ffcc8cf
chore: reset next for the new ORM design
medz Sep 14, 2026
5a4d03a
feat: implement typed queries and native database sessions
medz Sep 14, 2026
5b2531c
feat: generate record clients with relations and migration history
medz Sep 14, 2026
9512b55
feat: add atomic upsert and transactional batch inserts
medz Sep 14, 2026
a660b72
feat: add joins subqueries windows and typed CTEs
medz Sep 14, 2026
cc3ddbd
feat: add stable keyset cursors and verify generated type safety
medz Sep 14, 2026
ceeee84
feat: verify schema catalogs and baseline existing databases
medz Sep 14, 2026
7db402e
feat: generate migration diffs and rebuild SQLite tables atomically
medz Sep 14, 2026
69e9d5c
feat: add migration CLI and read-only SQLite inspection
medz Sep 14, 2026
cf4f1fc
feat: recover nontransactional migrations from durable checkpoints
medz Sep 14, 2026
7b5e8f2
feat: stream database cursors with cancellation and deadlines
medz Sep 14, 2026
9c2bf46
feat: join unique relations and batch composite keys
medz Sep 14, 2026
c21096c
feat: generate domain codecs and preserve JSON document presence
medz Sep 14, 2026
91b51ad
feat: watch typed queries after committed table changes
medz Sep 14, 2026
0be577a
feat: integrate build_runner with incremental schema generation
medz Sep 14, 2026
4d8681d
feat: compose typed SQL unions with record projections
medz Sep 14, 2026
febd6aa
feat: bound connection acquisition and drain abandoned leases
medz Sep 14, 2026
61631d1
feat: enforce transaction deadlines and classify failure outcomes
medz Sep 14, 2026
59459e7
feat: retry transactions within shared attempt and time budgets
medz Sep 14, 2026
3aff315
feat: gate application startup on compatible schema versions
medz Sep 14, 2026
61feeb7
feat: checkpoint and resume bounded historical backfills
medz Sep 14, 2026
74946ac
feat: import existing database catalogs as reviewed record schemas
medz Sep 14, 2026
d1f0d94
feat: declare and enforce signed integer column widths
medz Sep 14, 2026
96feb6c
feat: support exact decimal values and database arithmetic
medz Sep 14, 2026
8bd2787
feat: declare and enforce decimal column precision
medz Sep 15, 2026
1cfcf97
feat: divide and round SQL decimals without precision loss
medz Sep 15, 2026
43a8646
feat: compute exact decimal averages without overflowing totals
medz Sep 15, 2026
00853b4
feat: add local calendar types with native database support
medz Sep 15, 2026
9fffd9c
fix!: preserve UTC instants with explicit storage migrations
medz Sep 15, 2026
6605752
feat: generate typed SQL file queries with native validation
medz Sep 15, 2026
e6c61fb
feat: run SQLite in browser workers with OPFS persistence
medz Sep 15, 2026
5a2e304
feat: declare read-only relationships without foreign keys
medz Sep 15, 2026
dc8b056
feat: declare and migrate row check constraints
medz Sep 15, 2026
76b6e78
feat: add typed client defaults for inserts
medz Sep 15, 2026
af33c1e
feat: declare and migrate read-only computed columns
medz Sep 15, 2026
e0376c8
test: verify generated many-to-many memberships
medz Sep 15, 2026
94d24fe
feat: inspect query plans and observe execution phases
medz Sep 15, 2026
b23f934
perf: measure native query costs against the same driver
medz Sep 15, 2026
d0a8c9a
perf: avoid temporary selection decoding lists
medz Sep 15, 2026
b187db3
perf: record selection decoding cost reductions
medz Sep 15, 2026
7eaab3b
feat: preserve temporal column precision across backends
medz Sep 15, 2026
4ef499e
test: capture generated client editor behavior
medz Sep 15, 2026
f7df13e
test: compare schema authoring forms against identical APIs
medz Sep 15, 2026
20ffee7
test: verify native Flutter APK upgrades and persistence
medz Sep 15, 2026
1916d07
fix: preserve PostgreSQL policy metadata during catalog inspection
medz Sep 15, 2026
b694ba9
test: complete ORM lifecycle acceptance and query cookbook
medz Sep 15, 2026
37aec68
docs: explore all-Dart schema and migration workflows
medz Sep 15, 2026
85c4e42
feat(migrate)!: replace JSON artifacts with Dart source
medz Sep 15, 2026
0a99bbf
test: verify Dart migrations across native web and Flutter
medz Sep 15, 2026
6d1ba30
feat(migrate)!: bind migration histories to one database
medz Sep 15, 2026
5b6feed
fix(runtime): enforce query and session boundaries
medz Sep 16, 2026
ef7438d
refactor(api)!: clarify generation and migration contracts
medz Sep 16, 2026
a25c29c
test: verify API refactor across native and web
medz Sep 16, 2026
bcc7bfd
docs: research Flutter web integration with build probes
medz Sep 16, 2026
02dbd93
refactor(sqlite)!: unify native and web integration
medz Sep 16, 2026
82dfee4
docs: define standalone ORM redesign and acceptance scope
medz Sep 19, 2026
7a54553
feat: introduce standalone ORM layers and MySQL support
medz Sep 19, 2026
9785f96
test: record standalone ORM platform acceptance
medz Sep 19, 2026
8e1c669
ci: retire obsolete VitePress site builds
medz Sep 19, 2026
46265f8
fix: bound PostgreSQL discovery and align MySQL support
medz Sep 19, 2026
e7d9e6a
test: capture reviewed driver and web regressions
medz Sep 19, 2026
65637ff
test: verify Linux capabilities and bundle native assets
medz Sep 19, 2026
3aef4e7
fix: expose per-statement MySQL timeouts independently
medz Sep 19, 2026
326f41e
test: record timeout and portability acceptance
medz Sep 19, 2026
e933576
test: honor SQLite interruption capabilities across native suites
medz Sep 19, 2026
78dcf14
fix: retry transient browser profile cleanup races
medz Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions .github/FUNDING.yml

This file was deleted.

69 changes: 0 additions & 69 deletions .github/ISSUE_TEMPLATE/bug_report.yml

This file was deleted.

20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

111 changes: 111 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: CI

on:
pull_request:
push:
branches: [main]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: Dart and databases
runs-on: ubuntu-24.04
timeout-minutes: 45
services:
postgres:
image: postgres:18
env:
POSTGRES_USER: orm
POSTGRES_PASSWORD: orm
POSTGRES_DB: orm_test
ports:
- 5432:5432
options: >-
--health-cmd="pg_isready --username=orm --dbname=orm_test"
--health-interval=10s
--health-timeout=5s
--health-retries=10
mysql:
image: mysql:8.4
env:
MYSQL_ROOT_PASSWORD: orm_root
MYSQL_USER: orm
MYSQL_PASSWORD: orm
MYSQL_DATABASE: orm_test
ports:
- 3306:3306
options: >-
--health-cmd="mysql --protocol=TCP --host=127.0.0.1 --user=orm --password=orm --database=orm_test --execute='SELECT 1'"
--health-interval=10s
--health-timeout=5s
--health-retries=10
mariadb:
image: mariadb:11.8
env:
MARIADB_ROOT_PASSWORD: orm_root
MARIADB_USER: orm
MARIADB_PASSWORD: orm
MARIADB_DATABASE: orm_test
ports:
- 3307:3306
options: >-
--health-cmd="healthcheck.sh --connect --innodb_initialized"
--health-interval=10s
--health-timeout=5s
--health-retries=10
env:
ORM_TEST_POSTGRES: postgres://orm:orm@127.0.0.1:5432/orm_test
# Migration recovery tests create an isolated database per test process.
ORM_TEST_MYSQL: mysql://root:orm_root@127.0.0.1:3306/orm_test
ORM_TEST_MARIADB: mariadb://root:orm_root@127.0.0.1:3307/orm_test
# Both containers generate self-signed certificates. Still require TLS.
ORM_TEST_MYSQL_TLS: require
ORM_TEST_MARIADB_TLS: require
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: dart-lang/setup-dart@v1
with:
sdk: 3.13.3
- name: Install dependencies
run: dart pub get --enforce-lockfile
- name: Check formatting
run: dart format --output=none --set-exit-if-changed bin lib test tool example
- name: Analyze Dart package and examples
# The Flutter example is a separate package with its own SDK dependency.
run: |
for target in bin lib test tool example/*.dart example/migrations example/teams; do
dart analyze "$target"
done
- name: Check committed SQLite web assets
run: dart run tool/build_sqlite_web.dart --check
- name: Test SQLite, PostgreSQL, MySQL and MariaDB
run: dart test --concurrency=1

browser:
name: Chrome JS and WASM
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: dart-lang/setup-dart@v1
with:
sdk: 3.13.3
- name: Install dependencies
run: dart pub get --enforce-lockfile
- name: Locate Chrome
run: echo "CHROME_EXECUTABLE=$(command -v google-chrome)" >> "$GITHUB_ENV"
- name: Test Chrome with JavaScript
run: dart run tool/test_browser.dart
- name: Test Chrome with WebAssembly
run: dart run tool/test_browser.dart --wasm
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
.dart_tool/
build/
*.sqlite
*.sqlite-shm
*.sqlite-wal
.DS_Store
.env
.idea/
.vscode/
.dart_tool/
23 changes: 23 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Dart ORM

This branch is a new implementation. The design reference is
`research/new-dart-orm-design.md`; old code and upstream architecture are retired.

- Keep one product package. Add abstractions only to support real use cases.
- Use Dart 3.13 stable syntax, static generation, explicit sessions and typed selections.
- Table identity is independent of Dart record identity.
- Parameterize values, quote identifiers, and validate SQL scope before execution.
- Make relationship query counts and transaction boundaries observable.
- SQLite and PostgreSQL have separate driver configuration and capability checks.
- Verify behavior against real databases. Mark unverified platforms explicitly.
- Preserve immutable migration history and never infer destructive renames.
- Each migration history fixes one database engine. Save only that engine's SQL,
steps and frozen schema; reject mixed histories and mismatched connections.
- Prefer small Conventional Commits. Do not push without explicit authorization.
- Keep `docs/progress.md` accurate, including unfinished work and validation limits.
- Schema snapshots and saved migrations are Dart source. Retire the old JSON file
workflow directly; do not add compatibility readers or parallel output modes.
- Keep historical migration definitions independent of current application models.
Persist reviewed fingerprints and use static imports for migration registration.

Commands: `dart run bin/orm.dart`, `dart analyze`, `dart test`.
Loading