From ac9746d316271f545776388eb945924ff28fe756 Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Fri, 2 Feb 2024 17:04:56 -0600 Subject: Add Comment --- migrations/versions/742bdc6e0718_add_comments.py | 45 ++++++++++++++++++++++++ src/database/models/__init__.py | 3 +- src/database/models/blog.py | 5 +-- src/database/models/comment.py | 17 +++++++++ 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 migrations/versions/742bdc6e0718_add_comments.py create mode 100644 src/database/models/comment.py diff --git a/migrations/versions/742bdc6e0718_add_comments.py b/migrations/versions/742bdc6e0718_add_comments.py new file mode 100644 index 0000000..1684b62 --- /dev/null +++ b/migrations/versions/742bdc6e0718_add_comments.py @@ -0,0 +1,45 @@ +"""Add comments + +Revision ID: 742bdc6e0718 +Revises: 7a92bef47675 +Create Date: 2024-02-02 16:13:58.339249 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '742bdc6e0718' +down_revision = '7a92bef47675' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('comments', + sa.Column('id', sa.BigInteger(), nullable=False), + sa.Column('content', sa.Text(), nullable=False), + sa.Column('language', sa.String(length=16), nullable=False), + sa.Column('email', sa.String(length=256), nullable=False), + sa.Column('post', sa.String(length=1024), nullable=False), + sa.Column('blog_id', sa.BigInteger(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.Column('updated_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['blog_id'], ['blogs.id'], ), + sa.PrimaryKeyConstraint('id') + ) + with op.batch_alter_table('comments', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_comments_blog_id'), ['blog_id'], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('comments', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_comments_blog_id')) + + op.drop_table('comments') + # ### end Alembic commands ### diff --git a/src/database/models/__init__.py b/src/database/models/__init__.py index 8b13789..0647151 100644 --- a/src/database/models/__init__.py +++ b/src/database/models/__init__.py @@ -1 +1,2 @@ - +from src.database.models.blog import Blog +from src.database.models.comment import Comment diff --git a/src/database/models/blog.py b/src/database/models/blog.py index 6a0fb42..f18c7b6 100644 --- a/src/database/models/blog.py +++ b/src/database/models/blog.py @@ -1,6 +1,6 @@ -import datetime +from typing import List from sqlalchemy import BigInteger, String, DateTime -from sqlalchemy.orm import mapped_column, Mapped +from sqlalchemy.orm import mapped_column, Mapped, relationship from src.database import db @@ -9,5 +9,6 @@ class Blog(db.Model): id = mapped_column(BigInteger, primary_key=True) domain: Mapped[str] = mapped_column(String(255), nullable=False, unique=True) + comments = relationship('Comment', back_populates='blog') created_at = mapped_column(DateTime) updated_at = mapped_column(DateTime) diff --git a/src/database/models/comment.py b/src/database/models/comment.py new file mode 100644 index 0000000..0110e75 --- /dev/null +++ b/src/database/models/comment.py @@ -0,0 +1,17 @@ +from sqlalchemy import BigInteger, String, DateTime, Text, ForeignKey +from sqlalchemy.orm import mapped_column, Mapped, relationship +from src.database import db + + +class Comment(db.Model): + __tablename__ = 'comments' + + id = mapped_column(BigInteger, primary_key=True) + content: Mapped[str] = mapped_column(Text) + language: Mapped[str] = mapped_column(String(16), nullable=False) + email: Mapped[str] = mapped_column(String(256)) + post: Mapped[str] = mapped_column(String(1024), nullable=False) + blog_id: Mapped[int] = mapped_column(ForeignKey('blogs.id'), index=True) + blog = relationship('Blog', back_populates='comments') + created_at = mapped_column(DateTime) + updated_at = mapped_column(DateTime) -- cgit v1.2.3