feat(api): add database models

This commit is contained in:
bwstudio
2026-05-21 20:41:45 +08:00
parent 57245cc288
commit 16baff934a
6 changed files with 318 additions and 0 deletions
+5
View File
@@ -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"]
+33
View File
@@ -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")
+25
View File
@@ -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")
+14
View File
@@ -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())