update
This commit is contained in:
parent
01f53663e9
commit
1662cad02a
36
main.py
36
main.py
@ -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,
|
||||
),
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user