test_lab_store.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """测试资料和执行快照;任务状态、结果仍由业务任务表管理。"""
  2. import json
  3. from db import db_conn
  4. def assets(user):
  5. return db_conn.query('SELECT * FROM test_lab_assets WHERE user_name=? ORDER BY created_at DESC,id DESC', (user,))
  6. def asset(identifier, user):
  7. row = db_conn.query_one('SELECT * FROM test_lab_assets WHERE id=? AND user_name=?', (identifier, user))
  8. if not row:
  9. raise ValueError('测试资料不存在')
  10. return row
  11. def save_asset(user, filename, digest, size, identifier):
  12. db_conn.execute('INSERT INTO test_lab_assets (id,user_name,filename,sha256,size,created_at) VALUES (?,?,?,?,?,?)',
  13. (identifier,user,filename,digest,size,db_conn.fmt_dt()))
  14. return asset(identifier, user)
  15. def save_run(job, label, scenario, mode, request):
  16. db_conn.execute('INSERT INTO test_lab_runs (job_id,user_name,agent_name,label,scenario_id,execution_mode,request_json,created_at) VALUES (?,?,?,?,?,?,?,?)',
  17. (job['id'],job['user_name'],job['agent_name'],label,scenario,mode,json.dumps(request,ensure_ascii=False,allow_nan=False),db_conn.fmt_dt()))
  18. def run(identifier, user):
  19. row = db_conn.query_one('SELECT * FROM test_lab_runs WHERE job_id=? AND user_name=?', (identifier,user))
  20. if not row:
  21. raise ValueError('测试记录不存在')
  22. return row
  23. def runs(user, limit=50):
  24. return db_conn.query('SELECT r.*,j.status,j.finished_at FROM test_lab_runs r JOIN business_jobs j ON j.id=r.job_id WHERE r.user_name=? ORDER BY r.created_at DESC,r.job_id DESC LIMIT ?', (user,limit))