Ejemplo n.º 1
0
    def __init__(self, **kwargs):
        backend_cls = kwargs.pop("backend", None)
        if backend_cls is None:
            raise AttributeError("Missing 'backend' parameter.")
        self.backend = import_class(backend_cls)(self)

        schema = kwargs.pop("schema", None)
        if schema is None:
            raise AttributeError("Missing 'schema' parameter.")
        elif isinstance(schema, dict):
            self.schema = DBSchema.from_dict(schema)
        elif isinstance(schema, str):
            self.schema = DBSchema.from_json(schema)
        self.options = kwargs
Ejemplo n.º 2
0
def test_dbschema_load_from_json():
    sample_schema_dict = {
        "users": {
            "fields": {
                'name': {'type': 'nimoy.fields.TextField', 'required': False},
                'email': {'type': 'nimoy.fields.TextField', 'required': True}
            },
            "indexes": [('email',)],
        },
        "posts": {
            "fields": {
                'id': {'type': 'nimoy.fields.IDField', 'required': True},
                'title': {'type': 'nimoy.fields.TextField', 'required': True},
                'created_at': {'type': 'nimoy.fields.DatetimeField', 'required': True}
            },
            "indexes": [('id',)]
        }
    }
    dbschema = DBSchema.from_json(json_string=json.dumps(sample_schema_dict))
    dbschema_json = dbschema.to_json()

    assert isinstance(dbschema._schemas['users'], DocumentSchema)
    assert isinstance(dbschema._schemas['posts'], DocumentSchema)
    assert dbschema_json is not None