No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

query.py 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #-*- coding: utf-8 -*-
  2. from leobject import LeObject
  3. class LeQueryError(Exception):
  4. pass
  5. ## @brief Handle CRUD operations on datasource
  6. class LeQuery(object):
  7. ## @brief Constructor
  8. # @param target_class LeObject class or childs : The LeObject child class concerned by this query
  9. def __init__(self, target_class):
  10. if not issubclass(target_class, LeObject):
  11. raise TypeError("target_class have to be a child class of LeObject")
  12. self._target_class = target_class
  13. ## @brief Handles insert queries
  14. class LeInsertQuery(LeQuery):
  15. def __init__(self, target_class):
  16. super().__init__(target_class)
  17. if target_class.is_abstract():
  18. raise LeQueryError("Target EmClass cannot be abstract for an InsertQuery")
  19. ## @brief Handles Le*Query with a query_filter argument
  20. # @see LeGetQuery, LeUpdateQuery, LeDeleteQuery
  21. class LeFilteredQuery(LeQuery):
  22. pass
  23. ## @brief Handles Get queries
  24. class LeGetQuery(LeFilteredQuery):
  25. pass
  26. ## @brief Handles Update queries
  27. class LeUpdateQuery(LeFilteredQuery):
  28. pass
  29. ## @biref Handles Delete queries
  30. class LeInsertQuery(LeFilteredQuery):
  31. pass