from mongoengine import EmbeddedDocument, StringField, DateTimeField, LongField, DynamicField


class MetricEvent(EmbeddedDocument):
    metric = StringField(required=True, )
    variant = StringField(required=True)
    type = StringField(required=True)
    timestamp = DateTimeField(default=0, required=True)
    iter = LongField()
    value = DynamicField(required=True)

    @classmethod
    def from_dict(cls, **kwargs):
        return cls(**{k: v for k, v in kwargs.items() if k in cls._fields})