pub mod account_dto;
pub mod accounting_post_dto;
pub mod cost_center_dto;
pub mod emv_qr_config_dto;
pub mod bank_check_sequence_dto;
pub mod printed_check_dto;
pub mod tax_tag_repair_run_dto;
pub mod financial_statement_dto;
pub mod fiscal_period_dto;
pub mod journal_dto;
pub mod journal_line_dto;
pub mod ledger_dto;
pub mod reconciliation_dto;
pub mod reconciliation_item_dto;
pub mod full_reconcile_dto;
pub mod partial_reconcile_dto;
pub use account_dto::{
CreateAccountDto,
UpdateAccountDto,
PatchAccountDto,
AccountResponseDto,
AccountListResponseDto,
AccountSummaryDto,
};
pub use accounting_post_dto::{
CreateAccountingPostDto,
UpdateAccountingPostDto,
PatchAccountingPostDto,
AccountingPostResponseDto,
AccountingPostListResponseDto,
AccountingPostSummaryDto,
};
pub use cost_center_dto::{
CreateCostCenterDto,
UpdateCostCenterDto,
PatchCostCenterDto,
CostCenterResponseDto,
CostCenterListResponseDto,
CostCenterSummaryDto,
};
pub use emv_qr_config_dto::{
CreateEmvQrConfigDto,
UpdateEmvQrConfigDto,
PatchEmvQrConfigDto,
EmvQrConfigResponseDto,
EmvQrConfigListResponseDto,
EmvQrConfigSummaryDto,
};
pub use bank_check_sequence_dto::{
CreateBankCheckSequenceDto,
UpdateBankCheckSequenceDto,
PatchBankCheckSequenceDto,
BankCheckSequenceResponseDto,
BankCheckSequenceListResponseDto,
BankCheckSequenceSummaryDto,
};
pub use printed_check_dto::{
CreatePrintedCheckDto,
UpdatePrintedCheckDto,
PatchPrintedCheckDto,
PrintedCheckResponseDto,
PrintedCheckListResponseDto,
PrintedCheckSummaryDto,
};
pub use tax_tag_repair_run_dto::{
CreateTaxTagRepairRunDto,
UpdateTaxTagRepairRunDto,
PatchTaxTagRepairRunDto,
TaxTagRepairRunResponseDto,
TaxTagRepairRunListResponseDto,
TaxTagRepairRunSummaryDto,
};
pub use financial_statement_dto::{
CreateFinancialStatementDto,
UpdateFinancialStatementDto,
PatchFinancialStatementDto,
FinancialStatementResponseDto,
FinancialStatementListResponseDto,
FinancialStatementSummaryDto,
};
pub use fiscal_period_dto::{
CreateFiscalPeriodDto,
UpdateFiscalPeriodDto,
PatchFiscalPeriodDto,
FiscalPeriodResponseDto,
FiscalPeriodListResponseDto,
FiscalPeriodSummaryDto,
};
pub use journal_dto::{
CreateJournalDto,
UpdateJournalDto,
PatchJournalDto,
JournalResponseDto,
JournalListResponseDto,
JournalSummaryDto,
};
pub use journal_line_dto::{
CreateJournalLineDto,
UpdateJournalLineDto,
PatchJournalLineDto,
JournalLineResponseDto,
JournalLineListResponseDto,
JournalLineSummaryDto,
};
pub use ledger_dto::{
CreateLedgerDto,
UpdateLedgerDto,
PatchLedgerDto,
LedgerResponseDto,
LedgerListResponseDto,
LedgerSummaryDto,
};
pub use reconciliation_dto::{
CreateReconciliationDto,
UpdateReconciliationDto,
PatchReconciliationDto,
ReconciliationResponseDto,
ReconciliationListResponseDto,
ReconciliationSummaryDto,
};
pub use reconciliation_item_dto::{
CreateReconciliationItemDto,
UpdateReconciliationItemDto,
PatchReconciliationItemDto,
ReconciliationItemResponseDto,
ReconciliationItemListResponseDto,
ReconciliationItemSummaryDto,
};
pub use full_reconcile_dto::{
CreateFullReconcileDto,
UpdateFullReconcileDto,
PatchFullReconcileDto,
FullReconcileResponseDto,
FullReconcileListResponseDto,
FullReconcileSummaryDto,
};
pub use partial_reconcile_dto::{
CreatePartialReconcileDto,
UpdatePartialReconcileDto,
PatchPartialReconcileDto,
PartialReconcileResponseDto,
PartialReconcileListResponseDto,
PartialReconcileSummaryDto,
};
use serde::Serialize;
#[cfg(feature = "openapi")]
#[cfg(feature = "openapi")]
use utoipa::ToSchema;
#[derive(Debug, Clone, Default, serde::Deserialize)]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct PaginationParams {
#[serde(default = "default_page")]
pub page: u32,
#[serde(default = "default_per_page")]
pub per_page: u32,
pub sort_by: Option<String>,
pub sort_order: Option<String>,
}
fn default_page() -> u32 { 1 }
fn default_per_page() -> u32 { 20 }
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
#[serde(rename_all = "camelCase")]
pub struct ApiResponse<T> {
pub success: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<T>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<ApiError>,
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct ApiError {
pub code: String,
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub details: Option<serde_json::Value>,
}
impl<T> ApiResponse<T> {
pub fn ok(data: T) -> Self {
Self { success: true, data: Some(data), error: None }
}
pub fn err(code: impl Into<String>, message: impl Into<String>) -> Self {
Self {
success: false,
data: None,
error: Some(ApiError {
code: code.into(),
message: message.into(),
details: None,
}),
}
}
}