Source code for q2_sdk.hq.db.host_account_meta_data
from argparse import _SubParsersAction
from functools import partial
from typing import List
from q2_sdk.core.dynamic_imports import (
api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from q2_sdk.hq.table_row import TableRow
from q2_sdk.tools.decorators import dev_only
from .db_object import DbObject
[docs]
class HostAccountMetaDataRow(TableRow):
rowID: int
HostAccountID: int
CreateDate: int
HostAccountMetaDataValue: str
DataID: int
ShortName: str
[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