patterns.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from .base import BaseMySQLClient
  2. class Patterns(BaseMySQLClient):
  3. """
  4. 模式管理类,继承自基础MySQL客户端
  5. 用于处理维度、模式和产物的数据库操作
  6. """
  7. async def insert_dimensions(self, dimensions):
  8. """
  9. 批量插入维度数据到数据库
  10. Args:
  11. dimensions: 维度数据列表,每个元素包含(dim_name, dim_description, level)
  12. - dim_name: 维度名称
  13. - dim_description: 维度描述
  14. - level: 维度层级
  15. Returns:
  16. awaitable: 异步数据库操作结果
  17. """
  18. query = """
  19. INSERT IGNORE INTO dimensions (dim_name, dim_description, level)
  20. VALUES (%s, %s, %s);
  21. """
  22. return await self.pool.async_save(query=query, params=dimensions, batch=True)
  23. async def update_dimension_status(self, dimension_id, ori_status, new_status):
  24. """
  25. 更新维度状态
  26. Args:
  27. dimension_id: 维度ID
  28. ori_status: 原始状态(用于条件检查)
  29. new_status: 新状态
  30. Returns:
  31. awaitable: 异步数据库操作结果
  32. """
  33. query = """
  34. UPDATE dimensions SET status = %s WHERE id = %s AND status = %s;
  35. """
  36. return await self.pool.async_save(
  37. query=query, params=(new_status, dimension_id, ori_status)
  38. )
  39. async def insert_modes(self, modes):
  40. """
  41. 批量插入模式数据到数据库
  42. Args:
  43. modes: 模式数据列表,每个元素包含(mode_id, name, mode_percentage, description, detail, output_id, dim_name)
  44. - mode_id: 模式ID
  45. - name: 模式名称
  46. - mode_percentage: 模式占比
  47. - description: 模式描述
  48. - detail: 模式详情
  49. - output_id: 关联的产物ID
  50. - dim_name: 所属维度名称
  51. Returns:
  52. awaitable: 异步数据库操作结果
  53. """
  54. query = """
  55. INSERT IGNORE INTO modes (mode_id, name, mode_percentage, description, detail, output_id, dim_name)
  56. VALUES (%s, %s, %s, %s, %s, %s, %s);
  57. """
  58. return await self.pool.async_save(query=query, params=modes, batch=True)
  59. async def insert_outputs(self, outputs):
  60. """
  61. 批量插入产物数据到数据库
  62. Args:
  63. outputs: 产物数据列表,每个元素包含(output_id, output_type, description, content, constrains)
  64. - output_id: 产物ID
  65. - output_type: 产物类型
  66. - description: 产物描述
  67. - content: 产物内容
  68. - constrains: 产物约束条件
  69. Returns:
  70. awaitable: 异步数据库操作结果
  71. """
  72. query = """
  73. INSERT IGNORE INTO outputs (output_id, output_type, description, content, constrains)
  74. VALUES (%s, %s, %s, %s, %s);
  75. """
  76. return await self.pool.async_save(query=query, params=outputs, batch=True)