up
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""add series table(补漏:线上表已存在,此前无迁移,新环境部署会缺表)
|
||||
|
||||
Revision ID: e7a1f3c58d02
|
||||
Revises: c8f2a15e93b7
|
||||
Create Date: 2026-10-18 21:00:00.000000
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
revision = 'e7a1f3c58d02'
|
||||
down_revision = 'c8f2a15e93b7'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.create_table(
|
||||
'series',
|
||||
sa.Column('id', mysql.BIGINT(unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('title', sa.String(length=100), nullable=False, comment='系列标题'),
|
||||
sa.Column('cover_url', sa.String(length=500), nullable=False, server_default='', comment='封面'),
|
||||
sa.Column('description', sa.String(length=500), nullable=False, server_default='', comment='简介'),
|
||||
sa.Column('author_id', mysql.BIGINT(unsigned=True), nullable=True, comment='作者'),
|
||||
sa.Column('category_id', sa.Integer(), nullable=False, server_default='0'),
|
||||
sa.Column('total_episodes', sa.Integer(), nullable=False, server_default='0'),
|
||||
sa.Column('view_count', mysql.BIGINT(), nullable=False, server_default='0'),
|
||||
sa.Column('status', mysql.TINYINT(), nullable=False, server_default='1', comment='1正常 0下架'),
|
||||
sa.Column('created_at', sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp()),
|
||||
sa.Column('updated_at', sa.DateTime(), nullable=False,
|
||||
server_default=sa.func.current_timestamp(),
|
||||
onupdate=sa.func.current_timestamp()),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
)
|
||||
op.create_index('idx_cat_status', 'series', ['category_id', 'status'])
|
||||
op.create_index('idx_status_created', 'series', ['status', 'created_at'])
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_index('idx_status_created', table_name='series')
|
||||
op.drop_index('idx_cat_status', table_name='series')
|
||||
op.drop_table('series')
|
||||
Binary file not shown.
@@ -10,6 +10,9 @@ FORBIDDEN = 1003 # 无权限(功能需登录/已被封禁)
|
||||
CAPTCHA_ERROR = 1004 # 验证码错误或已过期
|
||||
RATE_LIMITED = 1005 # 请求过于频繁
|
||||
NOT_FOUND = 1006 # 资源不存在
|
||||
DUPLICATE = 1007 # 资源已存在(重复)
|
||||
CONFLICT = 1008 # 状态冲突(存在关联数据,无法操作)
|
||||
INVALID_PARAMS = PARAM_ERROR # 语义别名:参数错误
|
||||
ACCOUNT_DEACTIVATED = 1009 # 账号已注销(冻结期内登录可撤销)
|
||||
|
||||
# 2xxx 业务
|
||||
@@ -45,6 +48,8 @@ DEFAULT_MESSAGES = {
|
||||
CAPTCHA_ERROR: "验证码错误或已过期",
|
||||
RATE_LIMITED: "请求过于频繁,请稍后再试",
|
||||
NOT_FOUND: "资源不存在",
|
||||
DUPLICATE: "资源已存在",
|
||||
CONFLICT: "存在关联数据,无法操作",
|
||||
ACCOUNT_DEACTIVATED: "账号已注销",
|
||||
POINTS_NOT_ENOUGH: "积分不足,请充值或开通会员",
|
||||
FREE_LIMIT_EXCEEDED: "今日免费观看次数已用完",
|
||||
|
||||
Reference in New Issue
Block a user