This commit is contained in:
darkclip 2026-05-30 23:46:44 +08:00
parent 01f53663e9
commit 1662cad02a
Signed by: hl
GPG Key ID: A948B2AA5A5D3BDB

36
main.py
View File

@ -686,17 +686,43 @@ async def import_programs(
async def update_program(program_sn: str, program: ProgramUpdate):
with get_db(write=True) as conn:
cursor = conn.cursor()
cursor.execute('SELECT sn FROM programs WHERE sn = ?', (program_sn,))
if not cursor.fetchone():
raise HTTPException(status_code=404, detail='节目不存在')
# 获取当前节目的信息(特别是原 batch_id 和 order_num)
cursor.execute(
'UPDATE programs SET name = ?, unit = ?, performer = ?, category = ?, batch_id = ? WHERE sn = ?',
'SELECT batch_id, order_num FROM programs WHERE sn = ?', (program_sn,)
)
old = cursor.fetchone()
if not old:
raise HTTPException(status_code=404, detail='节目不存在')
new_batch_id = program.batch_id
# 如果批次发生了变更
if old['batch_id'] != new_batch_id:
# 获取目标批次的最大 order_num
cursor.execute(
'SELECT COALESCE(MAX(order_num), 0) FROM programs WHERE batch_id = ?',
(new_batch_id,),
)
max_order = cursor.fetchone()[0]
new_order_num = max_order + 1 # 新节目放到末尾
else:
# 批次未变,保留原 order_num
new_order_num = old['order_num']
# 更新节目信息,包括 batch_id 和 order_num
cursor.execute(
"""
UPDATE programs
SET name = ?, unit = ?, performer = ?, category = ?, batch_id = ?, order_num = ?
WHERE sn = ?
""",
(
program.name,
program.unit,
program.performer,
program.category,
program.batch_id,
new_batch_id,
new_order_num,
program_sn,
),
)