def test_query_builder_nested(): class AssignmentGroup(ModelSchema): sys_id = fields.String() name = fields.String() class Incident(TableModel): number = fields.String() assignment_group = AssignmentGroup assert ( str(Incident.assignment_group.name == "test123") == "assignment_group.name=test123" ) assert ( str(Incident.assignment_group.name.equals("test321")) == "assignment_group.name=test321" ) assert ( str(Incident.assignment_group.sys_id == "id123") == "assignment_group.sys_id=id123" ) assert ( str( select( Incident.assignment_group.name.equals("test") & Incident.number.ends_with("01") ) ) == "assignment_group.name=test^numberENDSWITH01" )
def test_query_builder_or(): class Incident(TableModel): sys_id = fields.String() impact = fields.Integer() sysparm_query = select(Incident.sys_id.equals("id123") | Incident.impact.equals(5)) assert str(sysparm_query) == "sys_id=id123^ORimpact=5"
def test_query_builder_and(): class Incident(TableModel): number = fields.String() priority = fields.Integer() sysparm_query = select( Incident.number.equals("number123") & Incident.priority.less_than(2) ) assert str(sysparm_query) == "number=number123^priority<2"
def test_query_builder_nq(): class Incident(TableModel): priority = fields.Integer() impact = fields.Integer() assert ( str( select( Incident.priority.equals(2) & Incident.impact.equals(5) ^ Incident.impact.not_equals(1) | Incident.priority.equals(2) ) ) == "priority=2^impact=5^NQimpact!=1^ORpriority=2" )
async def main(client): query = select( Incident.assignment_group.name.equals("Hardware") & Incident.impact.greater_or_equals(1)).order_asc(Incident.number) async with Incident(client, table_name="incident") as api: for response in await api.get(query, limit=1): agrp = response["assignment_group"] print( "{number} ({sys_id}) is assigned to group: {ag_name} ({ag_id})" .format( sys_id=response["sys_id"], number=response["number"], ag_id=agrp["sys_id"], ag_name=agrp["name"], ))
async def main(client, q_number: str): async with Incident( client, table_name="incident", return_only=["sys_id", "number", "short_description"], ) as inc: response = await inc.get_one(Incident.number == q_number) record = response.data async with Journal( client, table_name="sys_journal_field", return_only=["element", "sys_created_on", "sys_created_by", "value"], ) as jnl: wn_query = select( Journal.element_id.equals(record["sys_id"]) & Journal.element.equals("work_notes") ).order_asc(Journal.sys_created_on) record["journal"] = list(await jnl.get(wn_query)) print(record)
async def main(client): async with Incident(client, table_name="incident") as inc: query = select().order_asc(inc.number) async for _, record in inc.stream(query, limit=500, page_size=50): print("{number} ({sys_id}): {short_description}".format(**record))