"""empty message Revision ID: 668167a0e2d8 Revises: Create Date: 2022-02-25 02:30:06.547144 """ from alembic import op import sqlalchemy as sa import sqlalchemy_utils # revision identifiers, used by Alembic. revision = '668167a0e2d8' down_revision = None branch_labels = None depends_on = None def upgrade(): command = """ CREATE OR REPLACE FUNCTION parse_websearch(config regconfig, search_query text) RETURNS tsquery AS $$ SELECT string_agg( ( CASE WHEN position('''' IN words.word) > 0 THEN CONCAT(words.word, ':*') ELSE words.word END ), ' ' )::tsquery FROM ( SELECT trim( regexp_split_to_table( websearch_to_tsquery(config, lower(search_query))::text, ' ' ) ) AS word ) AS words $$ LANGUAGE SQL IMMUTABLE; CREATE OR REPLACE FUNCTION parse_websearch(search_query text) RETURNS tsquery AS $$ SELECT parse_websearch('pg_catalog.simple', search_query); $$ LANGUAGE SQL IMMUTABLE;""" op.execute(command) # ### commands auto generated by Alembic - please adjust! ### op.create_table('content_warning', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('description', sa.String(length=500), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('email_subscription', sa.Column('id', sa.Integer(), nullable=False), sa.Column('email', sa.String(length=100), nullable=False), sa.Column('blacklisted', sa.Boolean(), nullable=False), sa.Column('token', sa.String(length=32), nullable=True), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('email') ) op.create_table('license', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=50), nullable=False), sa.Column('is_foss', sa.Boolean(), nullable=False), sa.Column('url', sa.String(length=128), nullable=True), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('meta_package', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('user', sa.Column('id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('username', sa.String(length=50), nullable=False), sa.Column('password', sa.String(length=255), nullable=True), sa.Column('reset_password_token', sa.String(length=100), server_default='', nullable=False), sa.Column('rank', sa.Enum('BANNED', 'NOT_JOINED', 'NEW_MEMBER', 'MEMBER', 'TRUSTED_MEMBER', 'APPROVER', 'EDITOR', 'BOT', 'MODERATOR', 'ADMIN', name='userrank'), nullable=False), sa.Column('github_username', sa.String(length=50), nullable=True), sa.Column('forums_username', sa.String(length=50), nullable=True), sa.Column('github_access_token', sa.String(length=50), nullable=True), sa.Column('email', sa.String(length=255), nullable=True), sa.Column('email_confirmed_at', sa.DateTime(), nullable=True), sa.Column('locale', sa.String(length=10), nullable=True), sa.Column('profile_pic', sa.String(length=255), nullable=True), sa.Column('is_active', sa.Boolean(), server_default='0', nullable=False), sa.Column('display_name', sa.String(length=100), nullable=False), sa.Column('website_url', sa.String(length=255), nullable=True), sa.Column('donate_url', sa.String(length=255), nullable=True), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('email'), sa.UniqueConstraint('forums_username'), sa.UniqueConstraint('github_username') ) op.create_table('thread', sa.Column('id', sa.Integer(), nullable=False), # sa.Column('package_id', sa.Integer(), nullable=True), # sa.Column('review_id', sa.Integer(), nullable=True), sa.Column('author_id', sa.Integer(), nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('private', sa.Boolean(), server_default='0', nullable=False), sa.Column('locked', sa.Boolean(), server_default='0', nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['author_id'], ['user.id'], ), # sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), # sa.ForeignKeyConstraint(['review_id'], ['package_review.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('package', sa.Column('id', sa.Integer(), nullable=False), sa.Column('author_id', sa.Integer(), nullable=False), sa.Column('name', sa.Unicode(length=100), nullable=False), sa.Column('title', sa.Unicode(length=100), nullable=False), sa.Column('short_desc', sa.Unicode(length=200), nullable=False), sa.Column('desc', sa.UnicodeText(), nullable=True), sa.Column('build_desc', sa.UnicodeText(), nullable=True), sa.Column('install_desc', sa.UnicodeText(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('approved_at', sa.DateTime(), nullable=True), sa.Column('search_vector', sqlalchemy_utils.types.ts_vector.TSVectorType(), nullable=True), sa.Column('license_id', sa.Integer(), nullable=False), sa.Column('media_license_id', sa.Integer(), nullable=False), sa.Column('state', sa.Enum('WIP', 'CHANGES_NEEDED', 'READY_FOR_REVIEW', 'APPROVED', 'DELETED', name='packagestate'), nullable=False), sa.Column('dev_state', sa.Enum('WIP', 'BETA', 'ACTIVELY_DEVELOPED', 'MAINTENANCE_ONLY', 'AS_IS', 'DEPRECATED', 'LOOKING_FOR_MAINTAINER', name='packagedevstate'), nullable=True), sa.Column('score', sa.Float(), nullable=False), sa.Column('score_downloads', sa.Float(), nullable=False), sa.Column('downloads', sa.Integer(), nullable=False), sa.Column('review_thread_id', sa.Integer(), nullable=True), sa.Column('repo', sa.String(length=200), nullable=True), sa.Column('website', sa.String(length=200), nullable=True), sa.Column('issueTracker', sa.String(length=200), nullable=True), sa.Column('forums', sa.Integer(), nullable=True), sa.Column('video_url', sa.String(length=200), nullable=True), sa.ForeignKeyConstraint(['author_id'], ['user.id'], ), sa.ForeignKeyConstraint(['license_id'], ['license.id'], ), sa.ForeignKeyConstraint(['media_license_id'], ['license.id'], ), sa.ForeignKeyConstraint(['review_thread_id'], ['thread.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('package_review', sa.Column('id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('author_id', sa.Integer(), nullable=False), sa.Column('recommends', sa.Boolean(), nullable=False), sa.Column('score', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['author_id'], ['user.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id') ) op.add_column('thread', sa.Column('package_id', sa.Integer(), nullable=True)) op.create_foreign_key(None, 'thread', 'package', ['package_id'], ['id']) op.add_column('thread', sa.Column('review_id', sa.Integer(), nullable=True)) op.create_foreign_key(None, 'thread', 'package_review', ['review_id'], ['id'] ) op.create_index('ix_package_search_vector', 'package', ['search_vector'], unique=False, postgresql_using='gin') op.create_table('package_screenshot', sa.Column('id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=False), sa.Column('order', sa.Integer(), nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('url', sa.String(length=100), nullable=False), sa.Column('approved', sa.Boolean(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('width', sa.Integer(), nullable=False), sa.Column('height', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id') ) # sa.Column('cover_image_id', sa.Integer(), nullable=True), # sa.ForeignKeyConstraint(['cover_image_id'], ['package_screenshot.id'], ), op.add_column('package', sa.Column('cover_image_id', sa.Integer(), nullable=True)) op.create_foreign_key(None, 'package', 'package_screenshot', ['cover_image_id'], ['id']) op.create_table('tag', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('description', sa.String(length=500), nullable=True), sa.Column('backgroundColor', sa.String(length=6), nullable=False), sa.Column('textColor', sa.String(length=6), nullable=False), sa.Column('views', sa.Integer(), nullable=False), sa.Column('is_protected', sa.Boolean(), nullable=False), sa.Column('is_toplevel', sa.Boolean(), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_index(op.f('ix_user_username'), 'user', ['username'], unique=True) op.create_table('api_token', sa.Column('id', sa.Integer(), nullable=False), sa.Column('access_token', sa.String(length=34), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('owner_id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['owner_id'], ['user.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('access_token') ) op.create_table('audit_log_entry', sa.Column('id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('causer_id', sa.Integer(), nullable=True), sa.Column('severity', sa.Enum('NORMAL', 'USER', 'EDITOR', 'MODERATION', name='auditseverity'), nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('url', sa.String(length=200), nullable=True), sa.Column('package_id', sa.Integer(), nullable=True), sa.Column('description', sa.Text(), nullable=True), sa.ForeignKeyConstraint(['causer_id'], ['user.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('content_warnings', sa.Column('content_warning_id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['content_warning_id'], ['content_warning.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('content_warning_id', 'package_id') ) op.create_table('dependency', sa.Column('id', sa.Integer(), nullable=False), sa.Column('depender_id', sa.Integer(), nullable=True), sa.Column('package_id', sa.Integer(), nullable=True), sa.Column('meta_package_id', sa.Integer(), nullable=True), sa.Column('optional', sa.Boolean(), nullable=False), sa.ForeignKeyConstraint(['depender_id'], ['package.id'], ), sa.ForeignKeyConstraint(['meta_package_id'], ['meta_package.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('depender_id', 'package_id', 'meta_package_id', name='_dependency_uc') ) op.create_table('forum_topic', sa.Column('topic_id', sa.Integer(), autoincrement=False, nullable=False), sa.Column('author_id', sa.Integer(), nullable=False), sa.Column('wip', sa.Boolean(), nullable=False), sa.Column('discarded', sa.Boolean(), nullable=False), sa.Column('type', sa.Enum('GAME', 'TOOL', 'ASSETPACK', name='packagetype'), nullable=False), sa.Column('title', sa.String(length=200), nullable=False), sa.Column('name', sa.String(length=30), nullable=True), sa.Column('link', sa.String(length=200), nullable=True), sa.Column('posts', sa.Integer(), nullable=False), sa.Column('views', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['author_id'], ['user.id'], ), sa.PrimaryKeyConstraint('topic_id') ) op.create_table('maintainers', sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('user_id', 'package_id') ) op.create_table('notification', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('causer_id', sa.Integer(), nullable=False), sa.Column('type', sa.Enum('PACKAGE_EDIT', 'PACKAGE_APPROVAL', 'NEW_THREAD', 'NEW_REVIEW', 'THREAD_REPLY', 'BOT', 'MAINTAINER', 'EDITOR_ALERT', 'EDITOR_MISC', 'OTHER', name='notificationtype'), nullable=False), sa.Column('emailed', sa.Boolean(), nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('url', sa.String(length=200), nullable=True), sa.Column('package_id', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['causer_id'], ['user.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('package_alias', sa.Column('id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=False), sa.Column('author', sa.String(length=50), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('package_game_support', sa.Column('id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=False), sa.Column('game_id', sa.Integer(), nullable=False), sa.Column('supports', sa.Boolean(), nullable=False), sa.Column('confidence', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['game_id'], ['package.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('game_id', 'package_id', name='_package_game_support_uc') ) op.create_table('package_release', sa.Column('id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=True), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('releaseDate', sa.DateTime(), nullable=False), sa.Column('url', sa.String(length=200), nullable=False), sa.Column('approved', sa.Boolean(), nullable=False), sa.Column('task_id', sa.String(length=37), nullable=True), sa.Column('commit_hash', sa.String(length=41), nullable=True), sa.Column('downloads', sa.Integer(), nullable=False), sa.Column('channel', sa.String(length=200), nullable=False), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('package_review_vote', sa.Column('review_id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('is_positive', sa.Boolean(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['review_id'], ['package_review.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('review_id', 'user_id') ) op.create_table('package_update_config', sa.Column('package_id', sa.Integer(), nullable=False), sa.Column('last_commit', sa.String(length=41), nullable=True), sa.Column('last_tag', sa.String(length=41), nullable=True), sa.Column('outdated_at', sa.DateTime(), nullable=True), sa.Column('trigger', sa.Enum('COMMIT', 'TAG', name='packageupdatetrigger'), nullable=False), sa.Column('ref', sa.String(length=41), nullable=True), sa.Column('make_release', sa.Boolean(), nullable=False), sa.Column('auto_created', sa.Boolean(), nullable=False), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('package_id') ) op.create_table('provides', sa.Column('package_id', sa.Integer(), nullable=False), sa.Column('metapackage_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['metapackage_id'], ['meta_package.id'], ), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.PrimaryKeyConstraint('package_id', 'metapackage_id') ) op.create_table('tags', sa.Column('tag_id', sa.Integer(), nullable=False), sa.Column('package_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['package_id'], ['package.id'], ), sa.ForeignKeyConstraint(['tag_id'], ['tag.id'], ), sa.PrimaryKeyConstraint('tag_id', 'package_id') ) op.create_table('thread_reply', sa.Column('id', sa.Integer(), nullable=False), sa.Column('thread_id', sa.Integer(), nullable=False), sa.Column('comment', sa.String(length=2000), nullable=False), sa.Column('author_id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['author_id'], ['user.id'], ), sa.ForeignKeyConstraint(['thread_id'], ['thread.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('user_email_verification', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('email', sa.String(length=100), nullable=False), sa.Column('token', sa.String(length=32), nullable=True), sa.Column('is_password_reset', sa.Boolean(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('user_notification_preferences', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('pref_package_edit', sa.Integer(), nullable=False), sa.Column('pref_package_approval', sa.Integer(), nullable=False), sa.Column('pref_new_thread', sa.Integer(), nullable=False), sa.Column('pref_new_review', sa.Integer(), nullable=False), sa.Column('pref_thread_reply', sa.Integer(), nullable=False), sa.Column('pref_bot', sa.Integer(), nullable=False), sa.Column('pref_maintainer', sa.Integer(), nullable=False), sa.Column('pref_editor_alert', sa.Integer(), nullable=False), sa.Column('pref_editor_misc', sa.Integer(), nullable=False), sa.Column('pref_other', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('watchers', sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('thread_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['thread_id'], ['thread.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('user_id', 'thread_id') ) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_table('watchers') op.drop_table('user_notification_preferences') op.drop_table('user_email_verification') op.drop_table('thread_reply') op.drop_table('tags') op.drop_table('provides') op.drop_table('package_update_config') op.drop_table('package_review_vote') op.drop_table('package_release') op.drop_table('package_game_support') op.drop_table('package_alias') op.drop_table('notification') op.drop_table('maintainers') op.drop_table('forum_topic') op.drop_table('dependency') op.drop_table('content_warnings') op.drop_table('audit_log_entry') op.drop_table('api_token') op.drop_index(op.f('ix_user_username'), table_name='user') op.drop_table('user') op.drop_table('thread') op.drop_table('tag') op.drop_table('package_screenshot') op.drop_table('package_review') op.drop_index('ix_package_search_vector', table_name='package', postgresql_using='gin') op.drop_table('package') op.drop_table('meta_package') op.drop_table('license') op.drop_table('email_subscription') op.drop_table('content_warning') # ### end Alembic commands ###