user_data_relation.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. from datetime import datetime
  2. from sqlalchemy.orm import Session
  3. from ..models.db.graph import DbUserDataRelation
  4. class UserDataRelationBusiness:
  5. def __init__(self, db: Session):
  6. self.db = db
  7. def create_relation(self, user_id: int, data_category: str, data_id: int, role_id: int, user_name: str, role_name: str):
  8. """
  9. 创建用户数据关联
  10. :param user_id: 用户ID
  11. :param data_category: 数据类别(表名)
  12. :param data_id: 数据ID
  13. :param role_id: 角色ID
  14. :param user_name: 用户名称
  15. :param role_name: 角色名称
  16. :return: DbUserDataRelation对象
  17. """
  18. relation = DbUserDataRelation(
  19. user_id=user_id,
  20. data_category=data_category,
  21. data_id=data_id,
  22. role_id=role_id,
  23. user_name=user_name,
  24. role_name=role_name,
  25. created=datetime.now(),
  26. updated=datetime.now()
  27. )
  28. self.db.add(relation)
  29. self.db.commit()
  30. self.db.refresh(relation)
  31. return relation
  32. def get_relation(self, relation_id: int):
  33. """
  34. 获取关联关系
  35. :param relation_id: 关联ID
  36. :return: DbUserDataRelation对象
  37. """
  38. return self.db.query(DbUserDataRelation).filter(DbUserDataRelation.id == relation_id).first()
  39. def get_user_relations(self, user_id: int):
  40. """
  41. 获取用户的所有关联关系
  42. :param user_id: 用户ID
  43. :return: DbUserDataRelation对象列表
  44. """
  45. return self.db.query(DbUserDataRelation).filter(DbUserDataRelation.user_id == user_id).all()
  46. def get_data_relations(self, data_category: str, data_id: int):
  47. """
  48. 获取特定数据的所有关联关系
  49. :param data_category: 数据类别(表名)
  50. :param data_id: 数据ID
  51. :return: DbUserDataRelation对象列表
  52. """
  53. return self.db.query(DbUserDataRelation).filter(
  54. DbUserDataRelation.data_category == data_category,
  55. DbUserDataRelation.data_id == data_id
  56. ).all()
  57. def update_relation(self, relation_id: int, role_id: int, role_name: str):
  58. """
  59. 更新关联关系的角色ID
  60. :param relation_id: 关联ID
  61. :param role_id: 新的角色ID
  62. :param role_name: 新的角色名
  63. :return: 更新后的DbUserDataRelation对象
  64. """
  65. relation = self.get_relation(relation_id)
  66. if relation:
  67. relation.role_id = role_id
  68. relation.role_name = role_name
  69. relation.updated = datetime.now()
  70. self.db.commit()
  71. self.db.refresh(relation)
  72. return relation
  73. def delete_relation(self, relation_id: int):
  74. """
  75. 删除关联关系
  76. :param relation_id: 关联ID
  77. :return: 是否删除成功
  78. """
  79. relation = self.get_relation(relation_id)
  80. if relation:
  81. self.db.delete(relation)
  82. self.db.commit()
  83. return True
  84. return False
  85. def delete_user_relations(self, user_id: int):
  86. """
  87. 删除用户的所有关联关系
  88. :param user_id: 用户ID
  89. :return: 删除的记录数
  90. """
  91. count = self.db.query(DbUserDataRelation).filter(DbUserDataRelation.user_id == user_id).delete()
  92. self.db.commit()
  93. return count
  94. def delete_data_relations(self, data_category: str, data_id: int):
  95. """
  96. 删除特定数据的所有关联关系
  97. :param data_category: 数据类别(表名)
  98. :param data_id: 数据ID
  99. :return: 删除的记录数
  100. """
  101. count = self.db.query(DbUserDataRelation).filter(
  102. DbUserDataRelation.data_category == data_category,
  103. DbUserDataRelation.data_id == data_id
  104. ).delete()
  105. self.db.commit()
  106. return count