user_data_relation.py 3.6 KB

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