feat(feedback): dunite-feedback shared feedback domain crate (DEV-516) #28
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/DEV-516-dunite-feedback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Second shared-crate extraction under the DEV-495 epic (DEV-516). Adds
dunite-feedback: the feedback models + DTOs and a sqlx-backedFeedbackRepository, lifted from bunyip's superset so a8n-tools and the Bunyip stack share one copy instead of two hand-drifted ones.Design
sqlx::Error, which each consumer's?maps through its ownFrom<sqlx::Error> for AppError(both a8n and dunite-core mapRowNotFound -> NotFoundidentically). The two business not-found cases (delete,archive_one) return aboolso each app raises its own not-found with its own message - the crate never imports a consumer's error type.submitter_ip/user_agent, BUNYIP-92/93 bucket + archive_one) as canonical; a8n's copy was missing those fields.AdminFeedbackPage.tsxvs bunyip maudadmin.rs.Tests
10 model unit tests (FeedbackStatus, mask_email, excerpt) come along and pass; clippy
-D warnings+ fmt clean. The repository's SQL is exercised by the consumers' integration suites.Consumers
Wired first into bunyip (companion PR - clean re-export, bunyip is the superset). a8n-tools adoption follows as its own PR: it needs a migration to add
submitter_ip/user_agentto its feedback table and a reconcile of itslist_paginatedstatus-filter to the shared bucket semantics (plus its React admin), so it is deliberately separate.🤖 Generated with Claude Code
https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss