tp/tools/libgithub/option.py

78 lines
2.2 KiB
Python

from .util import *
from .graphql import GraphQLClient
from dataclasses import dataclass
from logger import LOG
class Option:
def __init__(self, id, name):
self.id = id
self.name = name
@staticmethod
def get_all_options(field_id: str) -> list['Option']:
LOG.debug(f'Getting all options for field {field_id}')
query = '''
query ($fieldId: ID!) {
node(id: $fieldId) {
... on ProjectV2SingleSelectField {
options {
id
name
}
}
}
}
'''
variables = {
"fieldId": field_id
}
data = GraphQLClient.get_instance().make_request(query, variables)
if data:
options = data['data']['node']['options']
LOG.info(f'Options: {options}')
ret_options = []
for option in options:
option_id = option['id']
option_name = option['name']
ret_options.append(Option(id = option_id, name = option_name))
return ret_options
else:
LOG.warning(f'No options found for field {field_id}')
return []
@staticmethod
def get_id(field_id: str, option_name: str) -> str:
LOG.debug(f'Getting option ID for field {field_id} with name {option_name}')
query = '''
query ($fieldId: ID!) {
node(id: $fieldId) {
... on ProjectV2SingleSelectField {
options {
id
name
}
}
}
}
'''
variables = {
"fieldId": field_id
}
data = GraphQLClient.get_instance().make_request(query, variables)
if data:
options = data['data']['node']['options']
for option in options:
if option['name'] == option_name:
option_id = option['id']
LOG.info(f'{option_name} Option ID: {option_id}')
return option_id
LOG.warning(f'No option found with name {option_name}')
return None
def delete(self):
pass