Source code for q2_sdk.hq.db.funds_transfer

from argparse import _SubParsersAction
from functools import partial
from typing import List
from lxml.objectify import IntElement, StringElement, BoolElement, FloatElement

from q2_sdk.core.exceptions import DatabaseDataError
from q2_sdk.core.dynamic_imports import (
    api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from .customer import Customer
from .db_object import DbObject
from .generated_transactions import GeneratedTransactions
from .representation_row_base import RepresentationRowBase
from .user import User


[docs] class FundsTransferRow(RepresentationRowBase): # object name: type hinting = "column name in the db response" TransactionID: IntElement = "TransactionID" ToAccountID: IntElement = "ToAccountID" Principal: FloatElement = "Principal" Interest: FloatElement = "Interest" TransferType: IntElement = "TransferType" IsSameDay: BoolElement = "IsSameDay" CustomerID: IntElement = "CustomerID" UserID: IntElement = "UserID" CreateDate: StringElement = "CreateDate" TransactionStatusID: IntElement = "TransactionStatusID" RecurringTransactionID: IntElement = "RecurringTransactionID" TransactionTypeID: IntElement = "TransactionTypeID" OriginatingAccountID: IntElement = "OriginatingAccountID" TransactionAmount: FloatElement = "TransactionAmount"
[docs] class FundsTransfer(DbObject): # GET_BY_NAME_KEY = "column in the db response" NAME = "FundsTransfer" REPRESENTATION_ROW_CLASS = FundsTransferRow
[docs] def add_arguments(self, parser: _SubParsersAction): subparser = parser.add_parser("get_funds_transfer") subparser.set_defaults(parser="get") subparser.set_defaults(func=partial(self.get, serialize_for_cli=True)) subparser.add_argument( "transaction_id", help="Q2_GeneratedTransactions.TransferID" ) subparser = parser.add_parser("get_funds_transfer_by_customer_id") subparser.set_defaults(parser="get_by_customer_id") subparser.set_defaults( func=partial(self.get_by_customer_id, serialize_for_cli=True) ) subparser.add_argument("customer_id", help="Q2_Customer.CustomerID") subparser.add_argument( "-rc", "--return-count", help="Number of rows to be returned" ) subparser = parser.add_parser("get_funds_transfer_by_user_id") subparser.set_defaults(parser="get_by_user_id") subparser.set_defaults( func=partial(self.get_by_user_id, serialize_for_cli=True) ) subparser.add_argument("user_id", help="Q2_User.UserID") subparser.add_argument( "-rc", "--return-count", help="Number of rows to be returned" ) subparser = parser.add_parser("get_funds_transfer_by_account_id") subparser.set_defaults(parser="get_by_host_account_id") subparser.set_defaults( func=partial(self.get_by_host_account_id, serialize_for_cli=True) ) subparser.add_argument("host_account_id", help="Q2_HostAccount.HostAccountID") subparser.add_argument( "-rc", "--return-count", help="Number of rows to be returned" )
[docs] async def get( self, transaction_id: int, serialize_for_cli=False ) -> List[FundsTransferRow]: generated_transaction_obj = GeneratedTransactions( self.logger, self.hq_credentials, ret_table_obj=True ) generated_transactions_row = await generated_transaction_obj.get_by_id( transaction_id ) if not generated_transactions_row: raise DatabaseDataError( f"No GeneratedTransactions with TransactionID {transaction_id} is present" ) response = await self.call_hq( "sdk_GetFundsTransfer", ExecuteStoredProcedure.SqlParameters([ ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "transaction_id", transaction_id, ) ]), ) if serialize_for_cli: columns = [ "TransactionID", "ToAccountID", "Principal", "Interest", "TransferType", "CustomerID", "CreateDate", "TransactionStatusID", "RecurringTransactionID", "TransactionTypeID", ] response = self.serialize_for_cli(response, columns) return response
[docs] async def get_by_customer_id( self, customer_id: int, return_count=None, serialize_for_cli=False ) -> List[FundsTransferRow]: customer_obj = Customer(self.logger, self.hq_credentials, ret_table_obj=True) customer_row = await customer_obj.get(customer_id=customer_id) if not customer_row: raise DatabaseDataError(f"No Customer with CustomerID {customer_id} exists") response = await self.call_hq( "sdk_GetFundsTransferByCustomerId", ExecuteStoredProcedure.SqlParameters([ ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "customer_id", customer_id ), ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "return_count", return_count, ), ]), ) if serialize_for_cli: columns = [ "TransactionID", "ToAccountID", "Principal", "Interest", "TransferType", "CustomerID", "UserID", "CreateDate", "TransactionStatusID", "RecurringTransactionID", "TransactionTypeID", ] response = self.serialize_for_cli(response, columns) return response
[docs] async def get_by_user_id( self, user_id: int, return_count=None, serialize_for_cli=False ) -> List[FundsTransferRow]: user_obj = User(self.logger, self.hq_credentials, ret_table_obj=True) customer_row = await user_obj.get(user_id) if not customer_row: raise DatabaseDataError(f"No User with UserID {user_id} exists") response = await self.call_hq( "sdk_GetFundsTransferByUserId", ExecuteStoredProcedure.SqlParameters([ ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "user_id", user_id ), ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "return_count", return_count, ), ]), ) if serialize_for_cli: columns = [ "TransactionID", "ToAccountID", "Principal", "Interest", "TransferType", "CustomerID", "UserID", "CreateDate", "TransactionStatusID", "RecurringTransactionID", "TransactionTypeID", ] response = self.serialize_for_cli(response, columns) return response
[docs] async def get_by_host_account_id( self, host_account_id: int, return_count=None, serialize_for_cli=False ) -> List[FundsTransferRow]: param_list = [ ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "host_account_id", host_account_id, ) ] if return_count: assert isinstance(return_count, int), "return_count must be int" param_list.append( ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "return_count", return_count ) ) response = await self.call_hq( "sdk_GetFundsTransferByHostAccountId", ExecuteStoredProcedure.SqlParameters(param_list), ) if serialize_for_cli: columns = [ "TransactionID", "ToAccountID", "Principal", "Interest", "TransferType", "CustomerID", "UserID", "CreateDate", "TransactionStatusID", "RecurringTransactionID", "TransactionTypeID", ] response = self.serialize_for_cli(response, columns) return response