101 lines
3.2 KiB
Python
101 lines
3.2 KiB
Python
from sqlalchemy import (
|
|
BigInteger,
|
|
Boolean,
|
|
Column,
|
|
Integer,
|
|
DECIMAL,
|
|
SMALLINT,
|
|
String,
|
|
LargeBinary
|
|
)
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from models.base import AuditBase, IdBase
|
|
|
|
|
|
class Blog(AuditBase):
|
|
title = Column(String(255), nullable=True, comment="博客标题")
|
|
top_value = Column(Integer, nullable=True, comment="置顶值 越大越靠前")
|
|
is_great = Column(Boolean, nullable=True, comment="是否是精品 0否1是")
|
|
category_id = Column(BigInteger, nullable=True, comment="博客类别")
|
|
summary = Column(String(255), nullable=True, comment="博客内容概要")
|
|
content_id = Column(BigInteger, nullable=True, comment="博客内容")
|
|
word_count = Column(Integer, nullable=True, comment="字数统计")
|
|
read_duration = Column(DECIMAL(10, 2), nullable=True, comment="阅读时长")
|
|
is_approved = Column(SMALLINT, nullable=True, comment="是否发布")
|
|
|
|
category = relationship(
|
|
"BlogCategory",
|
|
back_populates="blogs",
|
|
primaryjoin="foreign(Blog.category_id) == BlogCategory.id"
|
|
)
|
|
|
|
content = relationship(
|
|
"BlogContent",
|
|
back_populates="blog",
|
|
primaryjoin="foreign(Blog.content_id) == BlogContent.id"
|
|
)
|
|
|
|
visits = relationship(
|
|
"BlogVisit",
|
|
back_populates="blog",
|
|
primaryjoin="Blog.id == foreign(BlogVisit.blog_id)"
|
|
)
|
|
|
|
comments = relationship(
|
|
"BlogComment",
|
|
back_populates="blog",
|
|
primaryjoin="Blog.id == foreign(BlogComment.blog_id)"
|
|
)
|
|
|
|
|
|
class BlogCategory(AuditBase):
|
|
name = Column(String(45), nullable=True, comment="类别名称")
|
|
|
|
blogs = relationship(
|
|
"Blog",
|
|
back_populates="category",
|
|
primaryjoin="BlogCategory.id == foreign(Blog.category_id)"
|
|
)
|
|
|
|
|
|
class BlogContent(IdBase):
|
|
content = Column(LargeBinary, comment="博客内容")
|
|
|
|
blog = relationship(
|
|
"Blog",
|
|
back_populates="content",
|
|
primaryjoin="BlogContent.id == foreign(Blog.content_id)"
|
|
)
|
|
|
|
|
|
class BlogVisit(AuditBase):
|
|
ip = Column(String(255), nullable=True, comment="ip地址")
|
|
os = Column(String(255), nullable=True, comment="操作系统")
|
|
browser = Column(String(255), nullable=True, comment="浏览器")
|
|
uri = Column(String(255), nullable=True, comment="路径")
|
|
blog_id = Column(BigInteger, nullable=True, comment="博客id")
|
|
|
|
blog = relationship(
|
|
"Blog",
|
|
back_populates="visits",
|
|
primaryjoin="foreign(BlogVisit.blog_id) == Blog.id"
|
|
)
|
|
|
|
|
|
class BlogComment(AuditBase):
|
|
blog_id = Column(BigInteger, nullable=True, comment="博客id")
|
|
parent_id = Column(BigInteger, nullable=True, comment="父评论id")
|
|
name = Column(String(255), nullable=True, comment="评论人昵称")
|
|
website = Column(String(255), nullable=True, comment="评论人网站")
|
|
ip_address = Column(String(45), nullable=True, comment="评论人ip")
|
|
user_agent = Column(String(255), nullable=True, comment="评论人浏览器信息")
|
|
content = Column(String(512), nullable=True, comment="评论内容")
|
|
is_approved = Column(SMALLINT, nullable=True, comment="是否通过")
|
|
|
|
blog = relationship(
|
|
"Blog",
|
|
back_populates="comments",
|
|
primaryjoin="foreign(BlogComment.blog_id) == Blog.id"
|
|
)
|