kboss/b/cntoai/model_management_pin_top.dspy
2026-05-21 20:55:47 +08:00

49 lines
1.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

def _escape(value):
if value is None:
return None
return str(value).replace("'", "''")
async def model_management_pin_top(ns={}):
"""
置顶将模型排到全局列表最前sort_order 设为当前最小值 - 1
必填参数:
id (int|str) 模型主键
"""
model_id = ns.get('id')
if not model_id:
return {'status': False, 'msg': 'id is required'}
db = DBPools()
async with db.sqlorContext('kboss') as sor:
try:
current_sql = """
SELECT id, sort_order FROM model_management WHERE id = '%s' LIMIT 1;
""" % _escape(model_id)
current = await sor.sqlExe(current_sql, {})
if not current:
return {'status': False, 'msg': 'model not found'}
min_sql = "SELECT MIN(sort_order) AS min_order FROM model_management;"
min_order = int((await sor.sqlExe(min_sql, {}))[0].get('min_order') or 0)
current_order = int(current[0].get('sort_order') or 0)
if current_order <= min_order:
return {'status': True, 'msg': 'already at top', 'data': {'sort_order': current_order}}
new_order = min_order - 1
update_sql = """
UPDATE model_management SET sort_order = %s WHERE id = '%s';
""" % (new_order, _escape(model_id))
await sor.sqlExe(update_sql, {})
return {
'status': True,
'msg': 'pin to top success',
'data': {'id': model_id, 'sort_order': new_order},
}
except Exception as e:
await sor.rollback()
return {'status': False, 'msg': 'pin to top failed, %s' % str(e)}
ret = await model_management_pin_top(params_kw)
return ret