saleor-apps-rs/simple-payment-gateway/src/queries/event_transactions.rs

502 lines
10 KiB
Rust

use const_format::concatcp;
#[cynic::schema("saleor")]
mod schema {}
pub const fragment_checkout_details: &str = r#"
fragment CheckoutDetails on Checkout {
id
isShippingRequired
deliveryMethod {
... on Warehouse {
name
id
}
... on ShippingMethod {
id
name
}
}
}
"#;
pub const fragment_transaction_details: &str = r#"
fragment TransactionDetails on TransactionItem {
id
actions
externalUrl
message
authorizedAmount {
currency
amount
}
authorizePendingAmount {
currency
amount
}
canceledAmount {
currency
amount
}
cancelPendingAmount {
currency
amount
}
chargedAmount {
currency
amount
}
chargePendingAmount {
currency
amount
}
refundedAmount {
currency
amount
}
}
"#;
pub const fragment_order_details: &str = r#"
fragment OrderDetails on Order {
checkoutId
id
status
isPaid
paymentStatus
chargeStatus
canFinalize
shippingMethodName
collectionPointName
totalBalance {
currency
amount
}
}
"#;
// pub const sub_list_payment_gateways: &str = r#"
// subscription ListPaymentGateways {
// event {
// ... on PaymentListGateways {
// checkout {
// id
// }
// }
// }
// }
// "#;
pub const sub_payment_gateway_initialize_session: &str = concatcp!(
r#"
subscription PaymentGatewayInitializeSession {
event {
... on PaymentGatewayInitializeSession {
data
amount
sourceObject {
... on Checkout {
...CheckoutDetails
}
... on Order {
...OrderDetails
}
}
amount
}
}
}
"#,
fragment_order_details,
fragment_checkout_details
);
pub const sub_transaction_initialize_session: &str = concatcp!(
r#"
subscription transactionInitializeSession {
event {
... on TransactionInitializeSession {
data
sourceObject {
... on Checkout {
...CheckoutDetails
}
... on Order {
...OrderDetails
}
}
transaction {
...TransactionDetails
}
action {
amount
currency
actionType
}
}
}
}
"#,
fragment_order_details,
fragment_transaction_details,
fragment_checkout_details
);
pub const sub_transaction_process_session: &str = concatcp!(
r#"
subscription transactionProcessSession {
event {
... on TransactionProcessSession {
action {
amount
actionType
}
sourceObject {
... on Checkout {
...CheckoutDetails
}
... on Order {
...OrderDetails
}
}
transaction {
...TransactionDetails
}
data
}
}
}
"#,
fragment_order_details,
fragment_transaction_details,
fragment_checkout_details,
);
pub const sub_transaction_charge_requested: &str = concatcp!(
r#"
subscription transactionChargeRequested {
event {
... on TransactionChargeRequested {
action {
amount
actionType
}
transaction {
...TransactionDetails
}
}
}
}
"#,
fragment_transaction_details
);
pub const sub_transaction_refund_requested: &str = concatcp!(
r#"
subscription transactionRefundRequested {
event {
... on TransactionRefundRequested {
action {
amount
actionType
}
transaction {
...TransactionDetails
}
}
}
}
"#,
fragment_transaction_details
);
pub const sub_transaction_cancelation_requested: &str = concatcp!(
r#"
subscription transactionCancelationRequested {
event {
... on TransactionCancelationRequested {
action {
amount
actionType
}
transaction {
...TransactionDetails
}
}
}
}
"#,
fragment_transaction_details
);
#[derive(cynic::QueryFragment, Debug)]
pub struct Warehouse {
pub name: String,
pub id: cynic::Id,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "TransactionRefundRequested")]
pub struct TransactionRefundRequested2 {
pub action: TransactionAction,
pub transaction: Option<TransactionItem>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "TransactionProcessSession")]
pub struct TransactionProcessSession2 {
pub action: TransactionProcessAction,
pub source_object: OrderOrCheckout,
pub transaction: TransactionItem,
pub data: Option<Json>,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct TransactionProcessAction {
pub amount: PositiveDecimal,
pub action_type: TransactionFlowStrategyEnum,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "TransactionInitializeSession")]
pub struct TransactionInitializeSession2 {
pub data: Option<Json>,
pub source_object: OrderOrCheckout,
pub transaction: TransactionItem,
pub action: TransactionProcessAction2,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "TransactionProcessAction")]
pub struct TransactionProcessAction2 {
pub amount: PositiveDecimal,
pub currency: String,
pub action_type: TransactionFlowStrategyEnum,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "TransactionChargeRequested")]
pub struct TransactionChargeRequested2 {
pub action: TransactionAction,
pub transaction: Option<TransactionItem>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "TransactionCancelationRequested")]
pub struct TransactionCancelationRequested2 {
pub action: TransactionAction,
pub transaction: Option<TransactionItem>,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct TransactionItem {
pub id: cynic::Id,
pub actions: Vec<TransactionActionEnum>,
pub external_url: String,
pub message: String,
pub authorized_amount: Money,
pub authorize_pending_amount: Money,
pub canceled_amount: Money,
pub cancel_pending_amount: Money,
pub charged_amount: Money,
pub charge_pending_amount: Money,
pub refunded_amount: Money,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct TransactionAction {
pub amount: Option<PositiveDecimal>,
pub action_type: TransactionActionEnum,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Subscription")]
pub struct TransactionRefundRequested {
pub event: Option<Event>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Subscription")]
pub struct TransactionProcessSession {
pub event: Option<Event2>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Subscription")]
pub struct TransactionInitializeSession {
pub event: Option<Event3>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Subscription")]
pub struct TransactionChargeRequested {
pub event: Option<Event4>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Subscription")]
pub struct TransactionCancelationRequested {
pub event: Option<Event5>,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Subscription")]
pub struct PaymentGatewayInitializeSession {
pub event: Option<Event6>,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct ShippingMethod {
pub id: cynic::Id,
pub name: String,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "PaymentGatewayInitializeSession")]
pub struct PaymentGatewayInitializeSession2 {
pub data: Option<Json>,
pub amount: Option<PositiveDecimal>,
pub source_object: OrderOrCheckout,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct Order {
pub checkout_id: Option<cynic::Id>,
pub id: cynic::Id,
pub status: OrderStatus,
pub is_paid: bool,
pub payment_status: PaymentChargeStatusEnum,
pub charge_status: OrderChargeStatusEnum,
pub can_finalize: bool,
pub shipping_method_name: Option<String>,
pub collection_point_name: Option<String>,
pub total_balance: Money,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct Money {
pub currency: String,
pub amount: f64,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct Checkout {
pub id: cynic::Id,
pub is_shipping_required: bool,
pub delivery_method: Option<DeliveryMethod>,
}
#[derive(cynic::InlineFragments, Debug)]
#[cynic(graphql_type = "Event")]
pub enum Event6 {
PaymentGatewayInitializeSession2(PaymentGatewayInitializeSession2),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
#[cynic(graphql_type = "Event")]
pub enum Event5 {
TransactionCancelationRequested2(TransactionCancelationRequested2),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
#[cynic(graphql_type = "Event")]
pub enum Event4 {
TransactionChargeRequested2(TransactionChargeRequested2),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
#[cynic(graphql_type = "Event")]
pub enum Event3 {
TransactionInitializeSession2(TransactionInitializeSession2),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
#[cynic(graphql_type = "Event")]
pub enum Event2 {
TransactionProcessSession2(TransactionProcessSession2),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
pub enum Event {
TransactionRefundRequested2(TransactionRefundRequested2),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
pub enum DeliveryMethod {
Warehouse(Warehouse),
ShippingMethod(ShippingMethod),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::InlineFragments, Debug)]
pub enum OrderOrCheckout {
Checkout(Checkout),
Order(Order),
#[cynic(fallback)]
Unknown,
}
#[derive(cynic::Enum, Clone, Copy, Debug)]
pub enum OrderChargeStatusEnum {
None,
Partial,
Full,
Overcharged,
}
#[derive(cynic::Enum, Clone, Copy, Debug)]
pub enum OrderStatus {
Draft,
Unconfirmed,
Unfulfilled,
PartiallyFulfilled,
PartiallyReturned,
Returned,
Fulfilled,
Canceled,
Expired,
}
#[derive(cynic::Enum, Clone, Copy, Debug)]
pub enum PaymentChargeStatusEnum {
NotCharged,
Pending,
PartiallyCharged,
FullyCharged,
PartiallyRefunded,
FullyRefunded,
Refused,
Cancelled,
}
#[derive(cynic::Enum, Clone, Copy, Debug)]
pub enum TransactionActionEnum {
Charge,
Refund,
Cancel,
}
#[derive(cynic::Enum, Clone, Copy, Debug)]
pub enum TransactionFlowStrategyEnum {
Authorization,
Charge,
}
#[derive(cynic::Scalar, Debug, Clone)]
#[cynic(graphql_type = "JSON")]
pub struct Json(pub String);
#[derive(cynic::Scalar, Debug, Clone)]
pub struct PositiveDecimal(pub String);