Exemplo n.º 1
0
        'file_count': column_property(
            sql.select(
                [sql.func.count(media_files.c.id)],
                storage.c.id == media_files.c.storage_id,
            ).label('file_count'),
            deferred=True,
        ),
        'file_size_sum': column_property(
            sql.select(
                [sql.func.sum(media_files.c.size)],
                storage.c.id == media_files.c.storage_id,
            ).label('file_size_sum'),
            deferred=True,
        ),
    },
)

def add_engine_type(engine_cls):
    """Register this storage engine with the ORM."""
    log.debug('Registering engine %r: %r', engine_cls.engine_type, engine_cls)
    mapper(engine_cls,
           inherits=storage_mapper,
           polymorphic_identity=engine_cls.engine_type)

# Add our built-in storage engines to the polymorphic ORM mapping.
for engine in StorageEngine:
    add_engine_type(engine)

# Automatically add new engines as they're registered by plugins.
StorageEngine.add_register_observer(add_engine_type)