logaritmisk
9e1c88b294
feat(db): add catalogue object update/delete with audited field diffs
...
update_object records only changed fields as audit diffs and skips the
audit entry for no-op updates; delete_object records a Deleted entry.
Both operations are atomic on the caller's connection.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:32:16 +02:00
logaritmisk
616a6f05c6
refactor(db): DRY object SELECT columns, consistent date json; test date + all-none round-trip
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:29:40 +02:00
logaritmisk
e0c0187f29
feat(db): add catalogue object create/read/list with audit on create
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:24:03 +02:00
logaritmisk
95357f01dd
feat(db): non-empty CHECK constraints on object text columns
2026-06-02 09:21:08 +02:00
logaritmisk
c1dda280e2
feat(db): add object table
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:18:03 +02:00
logaritmisk
7782bd764a
test(db): zero-label authority round-trip; doc the labels-json constant
...
Also fix pre-existing clippy::explicit_auto_deref in all db test files
(&mut *tx → &mut tx across authority.rs and vocab.rs).
2026-06-02 09:01:06 +02:00
logaritmisk
6e45baa8d4
feat(db): add authority repository with multilingual labels
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:55:50 +02:00
logaritmisk
345073b130
test(db): cover zero-label term and duplicate vocabulary key; use try_get in vocabulary_by_key
2026-06-02 08:52:58 +02:00
logaritmisk
5dc07ddf4c
feat(db): add vocabulary/term repository with multilingual labels
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:48:51 +02:00
logaritmisk
cc1fbf5b7d
feat(db): RESTRICT vocabulary deletes; non-empty label/lang constraints
2026-06-02 08:46:34 +02:00
logaritmisk
93d54d7783
feat(db): add vocabulary, term, and authority tables
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:43:23 +02:00
logaritmisk
86a3a8a47c
test(db): assert audit_log mutations fail via the immutability trigger
2026-06-02 08:01:28 +02:00
logaritmisk
45aea6b702
test(db): enforce audit_log immutability and transactional atomicity
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:58:10 +02:00
logaritmisk
c67b588188
test(db): cover delete/empty-changes/empty-history; clarify map_row naming
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:56:05 +02:00
logaritmisk
87b016a56c
feat(db): add append-only audit repository (record, history_for)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:52:16 +02:00
logaritmisk
01c42837d1
feat(db): also reject TRUNCATE on audit_log (statement-level trigger)
2026-06-02 07:49:47 +02:00
logaritmisk
152fc30116
feat(db): schema bootstrap with append-only audit_log table
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:46:39 +02:00
logaritmisk
8da3eefdce
feat(db): add Db handle with pool connect and readiness ping
2026-06-02 00:54:17 +02:00
logaritmisk
b97c950f77
chore: replace placeholder package with role-named workspace
2026-06-02 00:38:53 +02:00