Source code for q2_sdk.hq.db.host_account_meta_data
from argparse import _SubParsersAction
from functools import partial
from typing import List
from lxml.objectify import IntElement, StringElement
from q2_sdk.core.dynamic_imports import (
api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from q2_sdk.tools.decorators import dev_only
from .db_object import DbObject
from .representation_row_base import RepresentationRowBase
[docs]
class HostAccountMetaDataRow(RepresentationRowBase):
# object name: type hinting = "column name in the db response"
rowID: IntElement = "rowID"
HostAccountID: IntElement = "HostAccountID"
CreateDate: IntElement = "CreateDate"
HostAccountMetaDataValue: StringElement = "HostAccountMetaDataValue"
DataID: IntElement = "DataID"
ShortName: StringElement = "ShortName"
[docs]
class HostAccountMetaData(DbObject):
NAME = "HostAccountMetaData"
REPRESENTATION_ROW_CLASS = HostAccountMetaDataRow
[docs]
def add_arguments(self, parser: _SubParsersAction):
subparser = parser.add_parser("get_host_account_meta_data")
subparser.set_defaults(parser="get")
subparser.set_defaults(func=partial(self.get, serialize_for_cli=True))
subparser.add_argument(
"data_element", help="Q2_HostAccountMetaDataElement.ShortName"
)
subparser.add_argument(
"host_account_id", help="Q2_HostAccountMetaDataElement.HostAccountID"
)
subparser = parser.add_parser("add_host_account_meta_data")
subparser.set_defaults(parser="add")
subparser.set_defaults(func=partial(self.create))
subparser.add_argument(
"data_element", help="Q2_HostAccountMetaDataElement.ShortName"
)
subparser.add_argument(
"host_account_id", help="Q2_HostAccountMetaDataElement.HostAccountID"
)
subparser.add_argument(
"data_value", help="Q2_HostAccountMetaData.HostAccountMetaDataValue"
)
subparser = parser.add_parser("remove_host_account_meta_data")
subparser.set_defaults(parser="delete")
subparser.set_defaults(func=partial(self.delete))
subparser.add_argument("data_id", help="Q2_HostAccountMetaData.DataID")
subparser.add_argument(
"host_account_id", help="Q2_HostAccountMetaData.HostAccountID"
)
[docs]
async def get(
self, data_element: str, host_account_id: int, serialize_for_cli=False
) -> List[HostAccountMetaDataRow]:
response = await self.call_hq(
"Q2_GetHostAccountMetaData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"dataElement",
data_element,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int,
"HostAccountID",
host_account_id,
),
]),
)
if serialize_for_cli:
columns = ["DataID", "HostAccountID", "HostAccountMetaDataValue"]
response = self.serialize_for_cli(
response, columns, fields_to_truncate=["HostAccountMetaDataValue"]
)
return response
[docs]
async def create(
self, data_element: str, host_account_id: int, data_value: str
) -> HostAccountMetaDataRow:
response = await self.call_hq(
"Q2_AddUpdateHostAccountMetaData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar,
"dataElement",
data_element,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int,
"HostAccountID",
host_account_id,
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.VarChar, "data", data_value
),
]),
)
return response
[docs]
@dev_only
async def delete(self, data_id: int, host_account_id: int):
"""Note: this only works in the dev environment"""
response = await self.call_hq(
"sdk_DeleteHostAccountMetaData",
ExecuteStoredProcedure.SqlParameters([
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int, "DataID", data_id
),
ExecuteStoredProcedure.SqlParam(
ExecuteStoredProcedure.DataType.Int,
"HostAccountID",
host_account_id,
),
]),
)
return response