feat(stripe): dunite-stripe crate with shared Stripe response DTOs (DEV-515 pt 1) #29

Merged
longjacksonle merged 2 commits from feat/DEV-515-dunite-stripe-dtos into main 2026-08-03 20:14:21 +02:00

What

First slice of DEV-515 (full Stripe service extraction, under the DEV-495 epic), sequenced small to keep a billing-critical refactor reviewable. Adds dunite-stripe holding the async-stripe response DTOs - product / price / subscription / subscription-item / checkout-price / invoice / webhook-endpoint - shared verbatim by a8n-tools and bunyip. Pure serde structs, zero coupling.

Next slice (follow-up PR)

The async-stripe StripeService + the runtime StripeConfig, behind a neutral StripeServiceError each consumer maps to its own AppError (the ~49-site error neutralization), plus its own async-stripe + reqwest 0.12 deps. Secret storage/encryption, the DB config model, tier reconciliation, and admin presentation stay per-consumer.

Tests

cargo build, cargo clippy --all-targets -- -D warnings, cargo fmt --check clean. Pure structs, no logic to unit-test here.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss

## What First slice of DEV-515 (full Stripe service extraction, under the DEV-495 epic), sequenced small to keep a billing-critical refactor reviewable. Adds `dunite-stripe` holding the async-stripe **response DTOs** - product / price / subscription / subscription-item / checkout-price / invoice / webhook-endpoint - shared verbatim by a8n-tools and bunyip. Pure serde structs, zero coupling. ## Next slice (follow-up PR) The async-stripe `StripeService` + the runtime `StripeConfig`, behind a neutral `StripeServiceError` each consumer maps to its own `AppError` (the ~49-site error neutralization), plus its own async-stripe + reqwest 0.12 deps. Secret storage/encryption, the DB config model, tier reconciliation, and admin presentation stay per-consumer. ## Tests `cargo build`, `cargo clippy --all-targets -- -D warnings`, `cargo fmt --check` clean. Pure structs, no logic to unit-test here. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
First slice of the DEV-515 full-Stripe-service extraction (DEV-495 epic), sequenced small to keep the billing-critical refactor reviewable. Adds the dunite-stripe crate holding the async-stripe response DTOs (product / price / subscription / subscription-item / checkout-price / invoice / webhook-endpoint), shared verbatim by a8n-tools and bunyip. Pure serde structs, zero coupling. The async-stripe StripeService + runtime StripeConfig - behind a neutral StripeServiceError each consumer maps to its own AppError - plus the ~49-site error neutralization land in the follow-up PR. Secret storage/encryption, the DB config model, tier reconciliation, and admin presentation stay per-consumer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
fix(stripe): reword models doc to satisfy clippy doc-lazy-continuation (DEV-515)
All checks were successful
Check / fmt + clippy + test (pull_request) Successful in 17s
create-release / create-release (pull_request) Has been skipped
0a810830c0
A line starting with '+ billing' was parsed as a markdown list bullet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
longjacksonle deleted branch feat/DEV-515-dunite-stripe-dtos 2026-08-03 20:14:21 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/dunite!29
No description provided.