from argparse import _SubParsersAction
from functools import partial
from q2_sdk.core.dynamic_imports import (
api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from .db_object import DbObject
[docs]
class ThirdPartyData(DbObject):
[docs]
def add_arguments(self, parser: _SubParsersAction):
subparser = parser.add_parser("get_third_party_data")
subparser.set_defaults(parser="get_third_party_data")
subparser.set_defaults(func=partial(self.get, serialize_for_cli=True))
subparser.add_argument("user_id", help="Q2_User.UserID")
subparser.add_argument("vendor_name", help="Q2_Vendors.VendorName")
subparser = parser.add_parser("add_third_party_data")
subparser.set_defaults(parser="add_third_party_data")
subparser.set_defaults(func=partial(self.create))
subparser.add_argument("user_id", help="Q2_User.UserID")
subparser.add_argument("vendor_name", help="Q2_Vendors.VendorName")
subparser.add_argument("data_name", help="Q2_ThirdPartyDataElements.Name")
subparser.add_argument("data_value", help="Q2_ThirdPartyData.DataValue")
subparser = parser.add_parser("add_or_update_third_party_data")
subparser.set_defaults(parser="add_or_update_third_party_data")
subparser.set_defaults(func=partial(self.add_or_update))
subparser.add_argument("user_id", help="Q2_User.UserID")
subparser.add_argument("vendor_name", help="Q2_Vendors.VendorName")
subparser.add_argument("data_name", help="Q2_ThirdPartyDataElements.Name")
subparser.add_argument("data_value", help="Q2_ThirdPartyData.DataValue")
[docs]
async def get(self, user_id: int, vendor_name: str, serialize_for_cli=False):
response = await self.call_hq(
"sdk_GetThirdPartyData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "userID", user_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"vendorName",
vendor_name,
),
]),
)
if serialize_for_cli:
response = self.serialize_for_cli(
response, ["VendorID", "UserID", "DataID", "DataValue", "VendorName"]
)
return response
[docs]
async def create(self, user_id, vendor_name, data_name, data_value):
return await self.call_hq(
"sdk_AddThirdPartyData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "userID", user_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"vendorName",
vendor_name,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "dataName", data_name
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "dataValue", data_value
),
]),
)
[docs]
async def add_or_update(self, user_id, vendor_name, data_name, data_value):
"""
Upserts third-party data, factoring in Q2_ThirdPartyDataShared and Q2_VendorGroupMembers.
"""
return await self.call_hq(
"Q2_AddUpdateThirdPartyData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "UserID", user_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"VendorName",
vendor_name,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "DataName", data_name
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "DataValue", data_value
),
]),
)
[docs]
async def update(self, user_id, vendor_name, data_name, data_value):
return await self.call_hq(
"sdk_UpdateThirdPartyData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "userID", user_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"vendorName",
vendor_name,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "dataName", data_name
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "dataValue", data_value
),
]),
)
[docs]
async def delete(self, user_id: int, vendor_name: str, data_name: str):
return await self.call_hq(
"sdk_RemoveThirdPartyData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "userID", user_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"vendorName",
vendor_name,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "dataName", data_name
),
]),
)
[docs]
async def delete_all_for_vendor(self, vendor_name: str):
return await self.call_hq(
"sdk_RemoveAllVendorThirdPartyData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"vendorName",
vendor_name,
),
]),
)