Nullable-column patches read as Some(Some(v)) / Some(None) at Rust call sites — correct but opaque:
UpdateParcelRequest { status: Some(Accepted), courier_id: Some(Some(user_id)), ticket_id: Some(Some(ticket_id)) }
Proposal: generate Default-based builder methods on Update DTOs — set_{field}(v), clear_{field}() for nullable columns:
UpdateParcelRequest::default().set_status(Accepted).set_courier_id(user_id).set_ticket_id(ticket_id)
Pure additive sugar; struct-literal construction keeps working.
Nullable-column patches read as
Some(Some(v))/Some(None)at Rust call sites — correct but opaque:Proposal: generate
Default-based builder methods on Update DTOs —set_{field}(v),clear_{field}()for nullable columns:Pure additive sugar; struct-literal construction keeps working.