Source code for q2_sdk.hq.db.caliper_api_custom_endpoints

from argparse import _SubParsersAction
from dataclasses import dataclass, fields
from functools import partial
from typing import Optional

from lxml.objectify import IntElement, StringElement
from q2_sdk.core.dynamic_imports import (
    api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from q2_sdk.hq.models.hq_params.stored_procedure import Param
from .db_object import DbObject
from .representation_row_base import RepresentationRowBase

D_TYPES = ExecuteStoredProcedure.DataType


[docs] @dataclass class CustomEndpointParameters: shortName: Optional[str] = None description: Optional[str] = None wedgeAddressID: Optional[int] = None author: Optional[str] = None customEndpointID: Optional[int] = None
[docs] def build_sql_parameters(self): params = [] for field in fields(self): name = field.name value = getattr(self, name) if value: this_type = ( D_TYPES.Int if field.type is int or field.type is Optional[int] else D_TYPES.VarChar ) Param(value, this_type, name).add_to_param_list(params) return params
[docs] class CaliperApiCustomEndpointsRow(RepresentationRowBase): # object name: type hinting = "column name in the db response" CustomEndpointID: IntElement = "CustomEndpointID" ShortName: StringElement = "ShortName" Description: StringElement = "Description" WedgeAddressID: IntElement = "WedgeAddressID" Author: StringElement = "Author"
[docs] class CaliperApiCustomEndpoints(DbObject): # GET_BY_NAME_KEY = "column in the db response" NAME = "CaliperApiCustomEndpoints" REPRESENTATION_ROW_CLASS = CaliperApiCustomEndpointsRow
[docs] def add_arguments(self, parser: _SubParsersAction): subparser = parser.add_parser("get_caliper_api_custom_endpoints") subparser.set_defaults(parser="get") subparser.set_defaults(func=partial(self.get, serialize_for_cli=True)) subparser = parser.add_parser("get_caliper_api_custom_endpoint") subparser.set_defaults(parser="get_by_short_name") subparser.set_defaults( func=partial(self.get_by_short_name, serialize_for_cli=True) ) subparser.add_argument( "-s", "--short-name", help="sdk_CaliperAPICustomEndpoint.ShortName" )
[docs] async def get(self, serialize_for_cli=False) -> list[CaliperApiCustomEndpointsRow]: response = await self.call_hq( "sdk_GetCaliperAPICustomEndpoints", ExecuteStoredProcedure.SqlParameters([]) ) if serialize_for_cli: columns = ["CustomEndpointID", "ShortName", "WedgeAddressID"] response = self.serialize_for_cli(response, columns) return response
[docs] async def get_by_short_name( self, short_name, serialize_for_cli=False ) -> list[CaliperApiCustomEndpointsRow]: params = [] Param(short_name, D_TYPES.VarChar, "shortName").add_to_param_list(params) response = await self.call_hq( "sdk_GetCaliperAPICustomEndpoint", ExecuteStoredProcedure.SqlParameters(params), ) if serialize_for_cli: columns = ["CustomEndpointID", "ShortName", "WedgeAddressID", "Url"] response = self.serialize_for_cli(response, columns) return response
[docs] async def create(self, endpoint_parameters: CustomEndpointParameters): sql_parameters = endpoint_parameters.build_sql_parameters() await self.call_hq( "sdk_CreateCaliperAPICustomEndpoint", ExecuteStoredProcedure.SqlParameters(sql_parameters), )
[docs] async def update(self, endpoint_parameters: CustomEndpointParameters): sql_parameters = endpoint_parameters.build_sql_parameters() await self.call_hq( "sdk_UpdateCaliperAPICustomEndpoint", ExecuteStoredProcedure.SqlParameters(sql_parameters), )
[docs] async def delete(self, short_name): remove_endpoint_param = [] Param(short_name, D_TYPES.VarChar, "shortName").add_to_param_list( remove_endpoint_param ) await self.call_hq( "sdk_RemoveCaliperAPICustomEndpoint", ExecuteStoredProcedure.SqlParameters(remove_endpoint_param), )