Skip to main content

backbone_inventory/presentation/dto/
mod.rs

1//! DTOs (Data Transfer Objects)
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! This module provides DTOs for the presentation layer,
6//! with OpenAPI schema support.
7
8pub mod picking_batch_dto;
9pub mod delivery_note_dto;
10pub mod delivery_note_item_dto;
11pub mod inventory_company_setting_dto;
12pub mod landed_cost_dto;
13pub mod landed_cost_line_dto;
14pub mod landed_cost_adjustment_line_dto;
15pub mod location_dto;
16pub mod stock_move_dto;
17pub mod stock_move_line_dto;
18pub mod operation_type_dto;
19pub mod transfer_dto;
20pub mod route_dto;
21pub mod route_rule_dto;
22pub mod reordering_rule_dto;
23pub mod purchase_receipt_dto;
24pub mod purchase_receipt_item_dto;
25pub mod quant_dto;
26pub mod scrap_dto;
27pub mod scrap_reason_tag_dto;
28pub mod stock_entry_dto;
29pub mod stock_entry_item_dto;
30pub mod stock_ledger_entry_dto;
31pub mod bin_dto;
32pub mod stock_reconciliation_dto;
33pub mod stock_reconciliation_item_dto;
34pub mod package_type_dto;
35pub mod storage_category_dto;
36pub mod storage_category_capacity_dto;
37pub mod putaway_rule_dto;
38pub mod lot_dto;
39pub mod package_dto;
40pub mod warehouse_dto;
41pub mod stock_item_dto;
42
43// Re-exports
44pub use picking_batch_dto::{
45    CreatePickingBatchDto,
46    UpdatePickingBatchDto,
47    PatchPickingBatchDto,
48    PickingBatchResponseDto,
49    PickingBatchListResponseDto,
50    PickingBatchSummaryDto,
51};
52pub use delivery_note_dto::{
53    CreateDeliveryNoteDto,
54    UpdateDeliveryNoteDto,
55    PatchDeliveryNoteDto,
56    DeliveryNoteResponseDto,
57    DeliveryNoteListResponseDto,
58    DeliveryNoteSummaryDto,
59};
60pub use delivery_note_item_dto::{
61    CreateDeliveryNoteItemDto,
62    UpdateDeliveryNoteItemDto,
63    PatchDeliveryNoteItemDto,
64    DeliveryNoteItemResponseDto,
65    DeliveryNoteItemListResponseDto,
66    DeliveryNoteItemSummaryDto,
67};
68pub use inventory_company_setting_dto::{
69    CreateInventoryCompanySettingDto,
70    UpdateInventoryCompanySettingDto,
71    PatchInventoryCompanySettingDto,
72    InventoryCompanySettingResponseDto,
73    InventoryCompanySettingListResponseDto,
74    InventoryCompanySettingSummaryDto,
75};
76pub use landed_cost_dto::{
77    CreateLandedCostDto,
78    UpdateLandedCostDto,
79    PatchLandedCostDto,
80    LandedCostResponseDto,
81    LandedCostListResponseDto,
82    LandedCostSummaryDto,
83};
84pub use landed_cost_line_dto::{
85    CreateLandedCostLineDto,
86    UpdateLandedCostLineDto,
87    PatchLandedCostLineDto,
88    LandedCostLineResponseDto,
89    LandedCostLineListResponseDto,
90    LandedCostLineSummaryDto,
91};
92pub use landed_cost_adjustment_line_dto::{
93    CreateLandedCostAdjustmentLineDto,
94    UpdateLandedCostAdjustmentLineDto,
95    PatchLandedCostAdjustmentLineDto,
96    LandedCostAdjustmentLineResponseDto,
97    LandedCostAdjustmentLineListResponseDto,
98    LandedCostAdjustmentLineSummaryDto,
99};
100pub use location_dto::{
101    CreateLocationDto,
102    UpdateLocationDto,
103    PatchLocationDto,
104    LocationResponseDto,
105    LocationListResponseDto,
106    LocationSummaryDto,
107};
108pub use stock_move_dto::{
109    CreateStockMoveDto,
110    UpdateStockMoveDto,
111    PatchStockMoveDto,
112    StockMoveResponseDto,
113    StockMoveListResponseDto,
114    StockMoveSummaryDto,
115};
116pub use stock_move_line_dto::{
117    CreateStockMoveLineDto,
118    UpdateStockMoveLineDto,
119    PatchStockMoveLineDto,
120    StockMoveLineResponseDto,
121    StockMoveLineListResponseDto,
122    StockMoveLineSummaryDto,
123};
124pub use operation_type_dto::{
125    CreateOperationTypeDto,
126    UpdateOperationTypeDto,
127    PatchOperationTypeDto,
128    OperationTypeResponseDto,
129    OperationTypeListResponseDto,
130    OperationTypeSummaryDto,
131};
132pub use transfer_dto::{
133    CreateTransferDto,
134    UpdateTransferDto,
135    PatchTransferDto,
136    TransferResponseDto,
137    TransferListResponseDto,
138    TransferSummaryDto,
139};
140pub use route_dto::{
141    CreateRouteDto,
142    UpdateRouteDto,
143    PatchRouteDto,
144    RouteResponseDto,
145    RouteListResponseDto,
146    RouteSummaryDto,
147};
148pub use route_rule_dto::{
149    CreateRouteRuleDto,
150    UpdateRouteRuleDto,
151    PatchRouteRuleDto,
152    RouteRuleResponseDto,
153    RouteRuleListResponseDto,
154    RouteRuleSummaryDto,
155};
156pub use reordering_rule_dto::{
157    CreateReorderingRuleDto,
158    UpdateReorderingRuleDto,
159    PatchReorderingRuleDto,
160    ReorderingRuleResponseDto,
161    ReorderingRuleListResponseDto,
162    ReorderingRuleSummaryDto,
163};
164pub use purchase_receipt_dto::{
165    CreatePurchaseReceiptDto,
166    UpdatePurchaseReceiptDto,
167    PatchPurchaseReceiptDto,
168    PurchaseReceiptResponseDto,
169    PurchaseReceiptListResponseDto,
170    PurchaseReceiptSummaryDto,
171};
172pub use purchase_receipt_item_dto::{
173    CreatePurchaseReceiptItemDto,
174    UpdatePurchaseReceiptItemDto,
175    PatchPurchaseReceiptItemDto,
176    PurchaseReceiptItemResponseDto,
177    PurchaseReceiptItemListResponseDto,
178    PurchaseReceiptItemSummaryDto,
179};
180pub use quant_dto::{
181    CreateQuantDto,
182    UpdateQuantDto,
183    PatchQuantDto,
184    QuantResponseDto,
185    QuantListResponseDto,
186    QuantSummaryDto,
187};
188pub use scrap_dto::{
189    CreateScrapDto,
190    UpdateScrapDto,
191    PatchScrapDto,
192    ScrapResponseDto,
193    ScrapListResponseDto,
194    ScrapSummaryDto,
195};
196pub use scrap_reason_tag_dto::{
197    CreateScrapReasonTagDto,
198    UpdateScrapReasonTagDto,
199    PatchScrapReasonTagDto,
200    ScrapReasonTagResponseDto,
201    ScrapReasonTagListResponseDto,
202    ScrapReasonTagSummaryDto,
203};
204pub use stock_entry_dto::{
205    CreateStockEntryDto,
206    UpdateStockEntryDto,
207    PatchStockEntryDto,
208    StockEntryResponseDto,
209    StockEntryListResponseDto,
210    StockEntrySummaryDto,
211};
212pub use stock_entry_item_dto::{
213    CreateStockEntryItemDto,
214    UpdateStockEntryItemDto,
215    PatchStockEntryItemDto,
216    StockEntryItemResponseDto,
217    StockEntryItemListResponseDto,
218    StockEntryItemSummaryDto,
219};
220pub use stock_ledger_entry_dto::{
221    CreateStockLedgerEntryDto,
222    UpdateStockLedgerEntryDto,
223    PatchStockLedgerEntryDto,
224    StockLedgerEntryResponseDto,
225    StockLedgerEntryListResponseDto,
226    StockLedgerEntrySummaryDto,
227};
228pub use bin_dto::{
229    CreateBinDto,
230    UpdateBinDto,
231    PatchBinDto,
232    BinResponseDto,
233    BinListResponseDto,
234    BinSummaryDto,
235};
236pub use stock_reconciliation_dto::{
237    CreateStockReconciliationDto,
238    UpdateStockReconciliationDto,
239    PatchStockReconciliationDto,
240    StockReconciliationResponseDto,
241    StockReconciliationListResponseDto,
242    StockReconciliationSummaryDto,
243};
244pub use stock_reconciliation_item_dto::{
245    CreateStockReconciliationItemDto,
246    UpdateStockReconciliationItemDto,
247    PatchStockReconciliationItemDto,
248    StockReconciliationItemResponseDto,
249    StockReconciliationItemListResponseDto,
250    StockReconciliationItemSummaryDto,
251};
252pub use package_type_dto::{
253    CreatePackageTypeDto,
254    UpdatePackageTypeDto,
255    PatchPackageTypeDto,
256    PackageTypeResponseDto,
257    PackageTypeListResponseDto,
258    PackageTypeSummaryDto,
259};
260pub use storage_category_dto::{
261    CreateStorageCategoryDto,
262    UpdateStorageCategoryDto,
263    PatchStorageCategoryDto,
264    StorageCategoryResponseDto,
265    StorageCategoryListResponseDto,
266    StorageCategorySummaryDto,
267};
268pub use storage_category_capacity_dto::{
269    CreateStorageCategoryCapacityDto,
270    UpdateStorageCategoryCapacityDto,
271    PatchStorageCategoryCapacityDto,
272    StorageCategoryCapacityResponseDto,
273    StorageCategoryCapacityListResponseDto,
274    StorageCategoryCapacitySummaryDto,
275};
276pub use putaway_rule_dto::{
277    CreatePutawayRuleDto,
278    UpdatePutawayRuleDto,
279    PatchPutawayRuleDto,
280    PutawayRuleResponseDto,
281    PutawayRuleListResponseDto,
282    PutawayRuleSummaryDto,
283};
284pub use lot_dto::{
285    CreateLotDto,
286    UpdateLotDto,
287    PatchLotDto,
288    LotResponseDto,
289    LotListResponseDto,
290    LotSummaryDto,
291};
292pub use package_dto::{
293    CreatePackageDto,
294    UpdatePackageDto,
295    PatchPackageDto,
296    PackageResponseDto,
297    PackageListResponseDto,
298    PackageSummaryDto,
299};
300pub use warehouse_dto::{
301    CreateWarehouseDto,
302    UpdateWarehouseDto,
303    PatchWarehouseDto,
304    WarehouseResponseDto,
305    WarehouseListResponseDto,
306    WarehouseSummaryDto,
307};
308pub use stock_item_dto::{
309    CreateStockItemDto,
310    UpdateStockItemDto,
311    PatchStockItemDto,
312    StockItemResponseDto,
313    StockItemListResponseDto,
314    StockItemSummaryDto,
315};
316
317// Common pagination types
318use serde::Serialize;
319
320#[cfg(feature = "openapi")]
321#[cfg(feature = "openapi")]
322use utoipa::ToSchema;
323
324/// Pagination parameters for list requests
325#[derive(Debug, Clone, Default, serde::Deserialize)]
326#[cfg_attr(feature = "openapi", derive(ToSchema))]
327pub struct PaginationParams {
328    /// Page number (1-indexed)
329    #[serde(default = "default_page")]
330    pub page: u32,
331    /// Items per page
332    #[serde(default = "default_per_page")]
333    pub per_page: u32,
334    /// Field to sort by
335    pub sort_by: Option<String>,
336    /// Sort order (asc/desc)
337    pub sort_order: Option<String>,
338}
339
340fn default_page() -> u32 { 1 }
341fn default_per_page() -> u32 { 20 }
342
343/// API response wrapper
344#[derive(Debug, Clone, Serialize)]
345#[cfg_attr(feature = "openapi", derive(ToSchema))]
346#[serde(rename_all = "camelCase")]
347pub struct ApiResponse<T> {
348    pub success: bool,
349    #[serde(skip_serializing_if = "Option::is_none")]
350    pub data: Option<T>,
351    #[serde(skip_serializing_if = "Option::is_none")]
352    pub error: Option<ApiError>,
353}
354
355#[derive(Debug, Clone, Serialize)]
356#[cfg_attr(feature = "openapi", derive(ToSchema))]
357pub struct ApiError {
358    pub code: String,
359    pub message: String,
360    #[serde(skip_serializing_if = "Option::is_none")]
361    pub details: Option<serde_json::Value>,
362}
363
364impl<T> ApiResponse<T> {
365    pub fn ok(data: T) -> Self {
366        Self { success: true, data: Some(data), error: None }
367    }
368
369    pub fn err(code: impl Into<String>, message: impl Into<String>) -> Self {
370        Self {
371            success: false,
372            data: None,
373            error: Some(ApiError {
374                code: code.into(),
375                message: message.into(),
376                details: None,
377            }),
378        }
379    }
380}