rbw / aiosnow

Asynchronous ServiceNow Library
MIT License
73 stars 12 forks source link

Add support for List [list of references] type #98

Open rbw opened 3 years ago

rbw commented 3 years ago

Items in fields of this type doesn't, in constrast to Reference, include links to records. This means aiosnow must be made aware of the location of these objects.

While this can be done in a variety of ways, the cleanest and most generic is probably via the schema constructor:

class TreeSchema(ModelSchema):
    name = fields.String()
    age = fields.Integer()
    height = fields.Integer()

class Forest(TableModel):
    name = fields.String()
    trees = TreeSchema(many=True, endpoint="tree")

The endpoint argument can then be picked up when interacting with the model and handled appropriately, e.g. turned into a table name when working with the TableModel.

See #96 for more details.

netixx commented 3 years ago

This seems good to me.

My use case in getting these values at the moment is filtering. At the moment, the only solution is to use a string field to get a coma separated string of sys_ids or Display names (with e.g. cmdb_model_category = aiosnow.fields.String(pluck=Pluck.DISPLAY_VALUE)) and use a contains/not contains filter, which is not ideal.