from apollo_utils.core.legacy.constants import VENDOR_SPOTIFY, VENDORS from marshmallow import Schema, fields, validate from src.constants.users.visits import VISITS_LIMIT, VisitDsp from src.legacy.core.serializers import QueryWebArgs class UsersVisits: class Request(QueryWebArgs): visit_type = fields.String(data_key="type") dsp = fields.String(validate=validate.OneOf(VENDORS), default=VENDOR_SPOTIFY, missing=VENDOR_SPOTIFY) limit = fields.Integer(default=VISITS_LIMIT, missing=VISITS_LIMIT) class Response(Schema): instance_id = fields.String() count = fields.Integer() dsp = fields.Function(lambda i: VisitDsp.NAME_MAPPING[i.dsp_id]) last_visit_at = fields.DateTime(format="%Y-%m-%dT%H:%M:%S")