backbone_accounting/presentation/dto/
mod.rs1pub mod account_dto;
9pub mod accounting_post_dto;
10pub mod cost_center_dto;
11pub mod emv_qr_config_dto;
12pub mod bank_check_sequence_dto;
13pub mod printed_check_dto;
14pub mod tax_tag_repair_run_dto;
15pub mod financial_statement_dto;
16pub mod fiscal_period_dto;
17pub mod journal_dto;
18pub mod journal_line_dto;
19pub mod ledger_dto;
20pub mod reconciliation_dto;
21pub mod reconciliation_item_dto;
22pub mod full_reconcile_dto;
23pub mod partial_reconcile_dto;
24
25pub use account_dto::{
27 CreateAccountDto,
28 UpdateAccountDto,
29 PatchAccountDto,
30 AccountResponseDto,
31 AccountListResponseDto,
32 AccountSummaryDto,
33};
34pub use accounting_post_dto::{
35 CreateAccountingPostDto,
36 UpdateAccountingPostDto,
37 PatchAccountingPostDto,
38 AccountingPostResponseDto,
39 AccountingPostListResponseDto,
40 AccountingPostSummaryDto,
41};
42pub use cost_center_dto::{
43 CreateCostCenterDto,
44 UpdateCostCenterDto,
45 PatchCostCenterDto,
46 CostCenterResponseDto,
47 CostCenterListResponseDto,
48 CostCenterSummaryDto,
49};
50pub use emv_qr_config_dto::{
51 CreateEmvQrConfigDto,
52 UpdateEmvQrConfigDto,
53 PatchEmvQrConfigDto,
54 EmvQrConfigResponseDto,
55 EmvQrConfigListResponseDto,
56 EmvQrConfigSummaryDto,
57};
58pub use bank_check_sequence_dto::{
59 CreateBankCheckSequenceDto,
60 UpdateBankCheckSequenceDto,
61 PatchBankCheckSequenceDto,
62 BankCheckSequenceResponseDto,
63 BankCheckSequenceListResponseDto,
64 BankCheckSequenceSummaryDto,
65};
66pub use printed_check_dto::{
67 CreatePrintedCheckDto,
68 UpdatePrintedCheckDto,
69 PatchPrintedCheckDto,
70 PrintedCheckResponseDto,
71 PrintedCheckListResponseDto,
72 PrintedCheckSummaryDto,
73};
74pub use tax_tag_repair_run_dto::{
75 CreateTaxTagRepairRunDto,
76 UpdateTaxTagRepairRunDto,
77 PatchTaxTagRepairRunDto,
78 TaxTagRepairRunResponseDto,
79 TaxTagRepairRunListResponseDto,
80 TaxTagRepairRunSummaryDto,
81};
82pub use financial_statement_dto::{
83 CreateFinancialStatementDto,
84 UpdateFinancialStatementDto,
85 PatchFinancialStatementDto,
86 FinancialStatementResponseDto,
87 FinancialStatementListResponseDto,
88 FinancialStatementSummaryDto,
89};
90pub use fiscal_period_dto::{
91 CreateFiscalPeriodDto,
92 UpdateFiscalPeriodDto,
93 PatchFiscalPeriodDto,
94 FiscalPeriodResponseDto,
95 FiscalPeriodListResponseDto,
96 FiscalPeriodSummaryDto,
97};
98pub use journal_dto::{
99 CreateJournalDto,
100 UpdateJournalDto,
101 PatchJournalDto,
102 JournalResponseDto,
103 JournalListResponseDto,
104 JournalSummaryDto,
105};
106pub use journal_line_dto::{
107 CreateJournalLineDto,
108 UpdateJournalLineDto,
109 PatchJournalLineDto,
110 JournalLineResponseDto,
111 JournalLineListResponseDto,
112 JournalLineSummaryDto,
113};
114pub use ledger_dto::{
115 CreateLedgerDto,
116 UpdateLedgerDto,
117 PatchLedgerDto,
118 LedgerResponseDto,
119 LedgerListResponseDto,
120 LedgerSummaryDto,
121};
122pub use reconciliation_dto::{
123 CreateReconciliationDto,
124 UpdateReconciliationDto,
125 PatchReconciliationDto,
126 ReconciliationResponseDto,
127 ReconciliationListResponseDto,
128 ReconciliationSummaryDto,
129};
130pub use reconciliation_item_dto::{
131 CreateReconciliationItemDto,
132 UpdateReconciliationItemDto,
133 PatchReconciliationItemDto,
134 ReconciliationItemResponseDto,
135 ReconciliationItemListResponseDto,
136 ReconciliationItemSummaryDto,
137};
138pub use full_reconcile_dto::{
139 CreateFullReconcileDto,
140 UpdateFullReconcileDto,
141 PatchFullReconcileDto,
142 FullReconcileResponseDto,
143 FullReconcileListResponseDto,
144 FullReconcileSummaryDto,
145};
146pub use partial_reconcile_dto::{
147 CreatePartialReconcileDto,
148 UpdatePartialReconcileDto,
149 PatchPartialReconcileDto,
150 PartialReconcileResponseDto,
151 PartialReconcileListResponseDto,
152 PartialReconcileSummaryDto,
153};
154
155use serde::Serialize;
157
158#[cfg(feature = "openapi")]
159#[cfg(feature = "openapi")]
160use utoipa::ToSchema;
161
162#[derive(Debug, Clone, Default, serde::Deserialize)]
164#[cfg_attr(feature = "openapi", derive(ToSchema))]
165pub struct PaginationParams {
166 #[serde(default = "default_page")]
168 pub page: u32,
169 #[serde(default = "default_per_page")]
171 pub per_page: u32,
172 pub sort_by: Option<String>,
174 pub sort_order: Option<String>,
176}
177
178fn default_page() -> u32 { 1 }
179fn default_per_page() -> u32 { 20 }
180
181#[derive(Debug, Clone, Serialize)]
183#[cfg_attr(feature = "openapi", derive(ToSchema))]
184#[serde(rename_all = "camelCase")]
185pub struct ApiResponse<T> {
186 pub success: bool,
187 #[serde(skip_serializing_if = "Option::is_none")]
188 pub data: Option<T>,
189 #[serde(skip_serializing_if = "Option::is_none")]
190 pub error: Option<ApiError>,
191}
192
193#[derive(Debug, Clone, Serialize)]
194#[cfg_attr(feature = "openapi", derive(ToSchema))]
195pub struct ApiError {
196 pub code: String,
197 pub message: String,
198 #[serde(skip_serializing_if = "Option::is_none")]
199 pub details: Option<serde_json::Value>,
200}
201
202impl<T> ApiResponse<T> {
203 pub fn ok(data: T) -> Self {
204 Self { success: true, data: Some(data), error: None }
205 }
206
207 pub fn err(code: impl Into<String>, message: impl Into<String>) -> Self {
208 Self {
209 success: false,
210 data: None,
211 error: Some(ApiError {
212 code: code.into(),
213 message: message.into(),
214 details: None,
215 }),
216 }
217 }
218}