"""initial migration Revision ID: 39df02d3c7d5 Revises: Create Date: 2023-11-01 12:00:00.000000 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '39df02d3c7d5' down_revision = None branch_labels = None depends_on = None def upgrade(): # Create user table op.create_table( 'user', sa.Column('id', sa.Integer(), nullable=False), sa.Column('email', sa.String(), nullable=False), sa.Column('username', sa.String(), nullable=False), sa.Column('hashed_password', sa.String(), nullable=False), sa.Column('is_active', sa.Boolean(), nullable=True), sa.Column('is_superuser', sa.Boolean(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=True) op.create_index(op.f('ix_user_id'), 'user', ['id'], unique=False) op.create_index(op.f('ix_user_username'), 'user', ['username'], unique=True) # Create news source table op.create_table( 'newssource', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=False), sa.Column('source_id', sa.String(), nullable=False), sa.Column('url', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_newssource_id'), 'newssource', ['id'], unique=False) op.create_index(op.f('ix_newssource_name'), 'newssource', ['name'], unique=False) op.create_index(op.f('ix_newssource_source_id'), 'newssource', ['source_id'], unique=True) # Create news category table op.create_table( 'newscategory', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_newscategory_id'), 'newscategory', ['id'], unique=False) op.create_index(op.f('ix_newscategory_name'), 'newscategory', ['name'], unique=True) # Create news article table op.create_table( 'newsarticle', sa.Column('id', sa.Integer(), nullable=False), sa.Column('title', sa.String(), nullable=False), sa.Column('description', sa.Text(), nullable=True), sa.Column('content', sa.Text(), nullable=True), sa.Column('url', sa.String(), nullable=False), sa.Column('image_url', sa.String(), nullable=True), sa.Column('published_at', sa.DateTime(), nullable=False), sa.Column('author', sa.String(), nullable=True), sa.Column('language', sa.String(), nullable=True), sa.Column('country', sa.String(), nullable=True), sa.Column('source_id', sa.Integer(), nullable=True), sa.Column('category_id', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['category_id'], ['newscategory.id'], ), sa.ForeignKeyConstraint(['source_id'], ['newssource.id'], ), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_newsarticle_id'), 'newsarticle', ['id'], unique=False) op.create_index(op.f('ix_newsarticle_published_at'), 'newsarticle', ['published_at'], unique=False) op.create_index(op.f('ix_newsarticle_title'), 'newsarticle', ['title'], unique=False) op.create_index(op.f('ix_newsarticle_url'), 'newsarticle', ['url'], unique=True) # Create saved article table op.create_table( 'savedarticle', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('article_id', sa.Integer(), nullable=False), sa.Column('notes', sa.Text(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['article_id'], ['newsarticle.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_savedarticle_id'), 'savedarticle', ['id'], unique=False) # Create user preference table op.create_table( 'userpreference', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('keywords', sa.String(), nullable=True), sa.Column('sources', sa.String(), nullable=True), sa.Column('categories', sa.String(), nullable=True), sa.Column('countries', sa.String(), nullable=True), sa.Column('languages', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_userpreference_id'), 'userpreference', ['id'], unique=False) def downgrade(): op.drop_index(op.f('ix_userpreference_id'), table_name='userpreference') op.drop_table('userpreference') op.drop_index(op.f('ix_savedarticle_id'), table_name='savedarticle') op.drop_table('savedarticle') op.drop_index(op.f('ix_newsarticle_url'), table_name='newsarticle') op.drop_index(op.f('ix_newsarticle_title'), table_name='newsarticle') op.drop_index(op.f('ix_newsarticle_published_at'), table_name='newsarticle') op.drop_index(op.f('ix_newsarticle_id'), table_name='newsarticle') op.drop_table('newsarticle') op.drop_index(op.f('ix_newscategory_name'), table_name='newscategory') op.drop_index(op.f('ix_newscategory_id'), table_name='newscategory') op.drop_table('newscategory') op.drop_index(op.f('ix_newssource_source_id'), table_name='newssource') op.drop_index(op.f('ix_newssource_name'), table_name='newssource') op.drop_index(op.f('ix_newssource_id'), table_name='newssource') op.drop_table('newssource') op.drop_index(op.f('ix_user_username'), table_name='user') op.drop_index(op.f('ix_user_id'), table_name='user') op.drop_index(op.f('ix_user_email'), table_name='user') op.drop_table('user')