feat(api): add database models
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
from app.models.joke import Joke
|
||||
from app.models.category import JokeType, JokeCrowd
|
||||
from app.models.user import AdminUser
|
||||
|
||||
__all__ = ["Joke", "JokeType", "JokeCrowd", "AdminUser"]
|
||||
@@ -0,0 +1,33 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class JokeType(Base):
|
||||
"""笑话类型表模型"""
|
||||
__tablename__ = "joke_types"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String(50), nullable=False)
|
||||
icon = Column(String(50), nullable=True)
|
||||
sort_order = Column(Integer, default=0)
|
||||
created_at = Column(DateTime, default=func.now())
|
||||
|
||||
# Relationships
|
||||
jokes = relationship("Joke", back_populates="type")
|
||||
|
||||
|
||||
class JokeCrowd(Base):
|
||||
"""笑话人群表模型"""
|
||||
__tablename__ = "joke_crowds"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String(50), nullable=False)
|
||||
icon = Column(String(50), nullable=True)
|
||||
sort_order = Column(Integer, default=0)
|
||||
created_at = Column(DateTime, default=func.now())
|
||||
|
||||
# Relationships
|
||||
jokes = relationship("Joke", back_populates="crowd")
|
||||
@@ -0,0 +1,25 @@
|
||||
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class Joke(Base):
|
||||
"""笑话表模型"""
|
||||
__tablename__ = "jokes"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
title = Column(String(200), nullable=False)
|
||||
content = Column(Text, nullable=False)
|
||||
type_id = Column(Integer, ForeignKey("joke_types.id"), nullable=True)
|
||||
crowd_id = Column(Integer, ForeignKey("joke_crowds.id"), nullable=True)
|
||||
status = Column(String(20), default="pending")
|
||||
view_count = Column(Integer, default=0)
|
||||
like_count = Column(Integer, default=0)
|
||||
created_at = Column(DateTime, default=func.now())
|
||||
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
type = relationship("JokeType", back_populates="jokes")
|
||||
crowd = relationship("JokeCrowd", back_populates="jokes")
|
||||
@@ -0,0 +1,14 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class AdminUser(Base):
|
||||
"""管理员用户表模型"""
|
||||
__tablename__ = "admin_users"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
username = Column(String(50), unique=True, nullable=False)
|
||||
password_hash = Column(String(255), nullable=False)
|
||||
created_at = Column(DateTime, default=func.now())
|
||||
Reference in New Issue
Block a user