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 q2_sdk.core.dynamic_imports import (
    api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from q2_sdk.hq.models.hq_params.stored_procedure import ParamsBuilder
from q2_sdk.hq.table_row import TableRow

from .db_object import DbObject

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_builder = ParamsBuilder() 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 ) params_builder.add_param(this_type, name, value) return params_builder.build()
[docs] class CaliperApiCustomEndpointsRow(TableRow): CustomEndpointID: int ShortName: str Description: str WedgeAddressID: int Author: str
[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 = ( ParamsBuilder().add_param(D_TYPES.VarChar, "shortName", short_name).build() ) 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 = ( ParamsBuilder().add_param(D_TYPES.VarChar, "shortName", short_name).build() ) await self.call_hq( "sdk_RemoveCaliperAPICustomEndpoint", ExecuteStoredProcedure.SqlParameters(remove_endpoint_param), )