Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
ad0b88c
feat(storage): postgres backend, 51-method trait surface and 37 sqlx …
chappie-daemon Oct 19, 2026
7f90f88
test(storage): differential parity harness, schema contract and fixtures
chappie-daemon Oct 19, 2026
8d1ec50
ci(storage): postgres service and parity step, ADR 0003 and changeset
chappie-daemon Oct 19, 2026
8fc8f2b
fix(storage): index-usable NIP-50, single pool without replicas, UTC …
chappie-daemon Oct 19, 2026
1f942d2
test(storage): 51-method fixture coverage, whitelist and NIP-50 plan …
chappie-daemon Oct 19, 2026
22e4eed
fix(scripts): bind parity ports to one address with per-run credentia…
chappie-daemon Oct 19, 2026
dbf4e0f
docs(storage): record the query costs inherited from the capture
chappie-daemon Oct 19, 2026
7349441
fix(scripts): fail fast when the parity bind cannot be dialled; prove…
chappie-daemon Oct 19, 2026
124be0e
fix(storage): feature-gate the database test targets and EXPLAIN the …
chappie-daemon Oct 19, 2026
847772e
fix(scripts): parse the daemon endpoint, refuse wildcard binds, requi…
chappie-daemon Oct 19, 2026
281b3b3
docs(storage): correct heed NO_TLS, fixture counts and revisit triggers
chappie-daemon Oct 19, 2026
82e801a
fix(storage): normalise bracketed IPv6 before the wildcard and loopba…
chappie-daemon Oct 19, 2026
edfd19d
fix(scripts): refuse every all-zero IPv6 bind spelling and dial the u…
chappie-daemon Oct 19, 2026
641fa42
fix(scripts): classify addresses by their canonical form; reword the …
chappie-daemon Oct 19, 2026
de5f3ef
fix(storage): bind negative invite counts and exercise transactional …
chappie-daemon Oct 20, 2026
12539d4
fix(scripts): percent-encode parity credentials in URLs
chappie-daemon Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .changeset/storage-lmdb-postgres.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
---
21 changes: 21 additions & 0 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,19 @@ jobs:
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.rust == 'true'
services:
postgres:
image: postgres:16-alpine
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
permissions:
contents: read
steps:
Expand Down Expand Up @@ -251,6 +264,14 @@ jobs:
-D clippy::todo -D clippy::unimplemented -D clippy::panic
- name: Tests
run: cargo test --workspace --all-features
# The two database-backed storage targets create and migrate their own scratch
# databases; the Cucumber half of the harness stays in scripts/storage-parity.sh.
- name: Storage parity against Postgres
env:
PARITY_ADMIN_URL: postgres://postgres:postgres@localhost:5432/postgres
run: cargo test -p nostream-storage --test migrations --test parity -- --ignored --test-threads=1
- name: Storage builds without the Postgres driver
run: cargo check -p nostream-storage --no-default-features --all-targets
- name: Release build
run: cargo build --workspace --all-features --release

Expand Down
13 changes: 13 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,19 @@ cargo test --workspace --all-features
cargo build --workspace --all-features --release
```

CI additionally runs the two database-backed storage tests ("Storage parity against Postgres")
against a `postgres:16-alpine` service, and they are `#[ignore]`d so a checkout without a database still passes
`cargo test --workspace`:

```
cargo test -p nostream-storage --test migrations --test parity -- --ignored --test-threads=1
```

`PARITY_ADMIN_URL` names the administrative database (CI sets
`postgres://postgres:postgres@localhost:5432/postgres`); the targets create, migrate and
drop their own scratch databases. `scripts/storage-parity.sh` runs both plus the
TypeScript Cucumber suite against the sqlx-migrated schema — the complete local oracle.

- **`--workspace`, never a single crate.** A crate-local `cargo test -p` proves nothing
about a workspace lint that another member trips.
- **`--all-features` is not optional.** `nostreamd`'s `otlp` feature gates three
Expand Down
Loading
Loading