Source code for kaiju_files.tables

import sqlalchemy as sa
import sqlalchemy.dialects.postgresql as sa_pg

__all__ = [
    'create_file_table', 'files', 'create_converters_table', 'converters'
]


[docs]def create_file_table(table_name: str, metadata: sa.MetaData, *columns: sa.Column): """ :param table_name: custom table name :param metadata: custom metadata object :param columns: additional columns """ return sa.Table( table_name, metadata, sa.Column('id', sa_pg.UUID, primary_key=True, server_default=sa.text("uuid_generate_v4()")), sa.Column('hash', sa_pg.UUID, nullable=True), sa.Column('name', sa_pg.VARCHAR, nullable=True), sa.Column('extension', sa_pg.VARCHAR, nullable=True), sa.Column( 'timestamp', sa_pg.TIMESTAMP, nullable=False, server_default=sa.func.timezone('UTC', sa.func.current_timestamp()) ), sa.Column( 'meta', sa_pg.JSONB, nullable=False, server_default=sa.text("'{}'::jsonb") ), sa.Index(f'idx_{table_name}_hash', 'hash', postgresql_using='hash'), sa.Index(f'idx_{table_name}_ext', 'extension', postgresql_using='hash'), sa.Index(f'idx_{table_name}_name', 'name', postgresql_using='hash'), sa.Index( f'idx_{table_name}_timestamp', 'timestamp', postgresql_using='btree', postgresql_ops={'timestamp': 'DESC'} ), *columns )
files = create_file_table('file', sa.MetaData())
[docs]def create_converters_table(table_name: str, metadata: sa.MetaData, *columns: sa.Column): """ :param table_name: custom table name :param metadata: custom metadata object :param columns: additional columns """ return sa.Table( table_name, metadata, sa.Column( 'id', sa_pg.UUID, nullable=False, primary_key=True, server_default=sa.text("uuid_generate_v4()")), sa.Column('cls', sa_pg.VARCHAR, nullable=False), sa.Column('name', sa_pg.TEXT, nullable=False, unique=True), sa.Column('system', sa_pg.BOOLEAN, nullable=False, default=False), sa.Column('settings', sa_pg.JSONB, nullable=False), sa.Column( 'timestamp', sa_pg.TIMESTAMP, nullable=False, server_default=sa.func.timezone('UTC', sa.func.current_timestamp()) ), *columns )
converters = create_converters_table('converters', sa.MetaData())