criteria-pattern 3.2.0__tar.gz → 3.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/PKG-INFO +1 -1
  2. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/__init__.py +1 -1
  3. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/converters/criteria_to_mysql_converter.py +9 -2
  4. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/converters/criteria_to_postgresql_converter.py +11 -2
  5. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/converters/criteria_to_sqlite_converter.py +11 -2
  6. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/.gitignore +0 -0
  7. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/LICENSE.md +0 -0
  8. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/README.md +0 -0
  9. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/converters/__init__.py +0 -0
  10. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/converters/criteria_to_mariadb_converter.py +0 -0
  11. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/converters/url_to_criteria_converter.py +0 -0
  12. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/errors/__init__.py +0 -0
  13. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/errors/invalid_column_error.py +0 -0
  14. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/errors/invalid_direction_error.py +0 -0
  15. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/errors/invalid_operator_error.py +0 -0
  16. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/errors/invalid_table_error.py +0 -0
  17. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/errors/sql_converter_error.py +0 -0
  18. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/__init__.py +0 -0
  19. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/criteria.py +0 -0
  20. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filter/__init__.py +0 -0
  21. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filter/filter.py +0 -0
  22. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filter/filter_field.py +0 -0
  23. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filter/filter_operator.py +0 -0
  24. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filter/filter_value.py +0 -0
  25. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filter/operator.py +0 -0
  26. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/filters.py +0 -0
  27. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/order/__init__.py +0 -0
  28. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/order/direction.py +0 -0
  29. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/order/order.py +0 -0
  30. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/order/order_direction.py +0 -0
  31. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/order/order_field.py +0 -0
  32. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/orders.py +0 -0
  33. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/page_number.py +0 -0
  34. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/page_size.py +0 -0
  35. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/__init__.py +0 -0
  36. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/__init__.py +0 -0
  37. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/criteria_mother.py +0 -0
  38. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filter/__init__.py +0 -0
  39. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filter/filter_field_mother.py +0 -0
  40. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filter/filter_mother.py +0 -0
  41. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filter/filter_operator_mother.py +0 -0
  42. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filter/filter_value_mother.py +0 -0
  43. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filter/operator_mother.py +0 -0
  44. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/filters_mother.py +0 -0
  45. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/order/__init__.py +0 -0
  46. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/order/direction_mother.py +0 -0
  47. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/order/order_direction_mother.py +0 -0
  48. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/order/order_field_mother.py +0 -0
  49. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/order/order_mother.py +0 -0
  50. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/orders_mother.py +0 -0
  51. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/page_number_mother.py +0 -0
  52. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/models/testing/mothers/page_size_mother.py +0 -0
  53. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/criteria_pattern/py.typed +0 -0
  54. {criteria_pattern-3.2.0 → criteria_pattern-3.3.0}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: criteria-pattern
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: The Criteria Pattern is a Python package that simplifies and standardizes criteria based filtering, validation and selection.
5
5
  Project-URL: Homepage, https://github.com/adriamontoto/criteria-pattern
6
6
  Project-URL: Repository, https://github.com/adriamontoto/criteria-pattern
@@ -1,4 +1,4 @@
1
- __version__ = '3.2.0'
1
+ __version__ = '3.3.0'
2
2
 
3
3
  from .models import Criteria, Direction, Filter, Operator, Order, PageNumber, PageSize
4
4
 
@@ -120,20 +120,27 @@ class CriteriaToMysqlConverter:
120
120
 
121
121
  query = f'SELECT {", ".join(columns)} FROM {table}' # noqa: S608 # nosec
122
122
  parameters: list[Any] = []
123
+ parameters_counter = 0
123
124
 
124
125
  if criteria.has_filters():
125
126
  where_clause, parameters = cls._process_filters(criteria=criteria, columns_mapping=columns_mapping)
126
127
  query += f' WHERE {where_clause}'
128
+ parameters_counter = len(parameters)
127
129
 
128
130
  if criteria.has_orders():
129
131
  order_clause = cls._process_orders(criteria=criteria, columns_mapping=columns_mapping)
130
132
  query += f' ORDER BY {order_clause}'
131
133
 
132
134
  if criteria.has_page_size():
133
- query += f' LIMIT {criteria.page_size}'
135
+ parameters.append(criteria.page_size)
136
+ query += ' LIMIT %s'
137
+ parameters_counter += 1
134
138
 
135
139
  if criteria.has_pagination():
136
- query += f' OFFSET {criteria.page_size * (criteria.page_number - 1)}' # type: ignore[operator]
140
+ offset_value = criteria.page_size * (criteria.page_number - 1) # type: ignore[operator]
141
+ parameters.append(offset_value)
142
+ query += ' OFFSET %s'
143
+ parameters_counter += 1
137
144
 
138
145
  return f'{query};', parameters
139
146
 
@@ -122,20 +122,29 @@ class CriteriaToPostgresqlConverter:
122
122
  quoted_table = '.'.join(f'"{part}"' for part in table.split('.'))
123
123
  query = f'SELECT {", ".join(quoted_columns)} FROM {quoted_table}' # noqa: S608 # nosec
124
124
  parameters: dict[str, Any] = {}
125
+ parameters_counter = 0
125
126
 
126
127
  if criteria.has_filters():
127
128
  where_clause, parameters = cls._process_filters(criteria=criteria, columns_mapping=columns_mapping)
128
129
  query += f' WHERE {where_clause}'
130
+ parameters_counter = len(parameters)
129
131
 
130
132
  if criteria.has_orders():
131
133
  order_clause = cls._process_orders(criteria=criteria, columns_mapping=columns_mapping)
132
134
  query += f' ORDER BY {order_clause}'
133
135
 
134
136
  if criteria.has_page_size():
135
- query += f' LIMIT {criteria.page_size}'
137
+ limit_parameter = f'limit_{parameters_counter}'
138
+ parameters[limit_parameter] = criteria.page_size
139
+ query += f' LIMIT %({limit_parameter})s'
140
+ parameters_counter += 1
136
141
 
137
142
  if criteria.has_pagination():
138
- query += f' OFFSET {criteria.page_size * (criteria.page_number - 1)}' # type: ignore[operator]
143
+ offset_parameter = f'offset_{parameters_counter}'
144
+ offset_value = criteria.page_size * (criteria.page_number - 1) # type: ignore[operator]
145
+ parameters[offset_parameter] = offset_value
146
+ query += f' OFFSET %({offset_parameter})s'
147
+ parameters_counter += 1
139
148
 
140
149
  return f'{query};', parameters
141
150
 
@@ -122,20 +122,29 @@ class CriteriaToSqliteConverter:
122
122
  quoted_table = '.'.join(f'"{part}"' for part in table.split('.'))
123
123
  query = f'SELECT {", ".join(quoted_columns)} FROM {quoted_table}' # noqa: S608 # nosec
124
124
  parameters: dict[str, Any] = {}
125
+ parameters_counter = 0
125
126
 
126
127
  if criteria.has_filters():
127
128
  where_clause, parameters = cls._process_filters(criteria=criteria, columns_mapping=columns_mapping)
128
129
  query += f' WHERE {where_clause}'
130
+ parameters_counter = len(parameters)
129
131
 
130
132
  if criteria.has_orders():
131
133
  order_clause = cls._process_orders(criteria=criteria, columns_mapping=columns_mapping)
132
134
  query += f' ORDER BY {order_clause}'
133
135
 
134
136
  if criteria.has_page_size():
135
- query += f' LIMIT {criteria.page_size}'
137
+ limit_parameter = f'limit_{parameters_counter}'
138
+ parameters[limit_parameter] = criteria.page_size
139
+ query += f' LIMIT :{limit_parameter}'
140
+ parameters_counter += 1
136
141
 
137
142
  if criteria.has_pagination():
138
- query += f' OFFSET {criteria.page_size * (criteria.page_number - 1)}' # type: ignore[operator]
143
+ offset_parameter = f'offset_{parameters_counter}'
144
+ offset_value = criteria.page_size * (criteria.page_number - 1) # type: ignore[operator]
145
+ parameters[offset_parameter] = offset_value
146
+ query += f' OFFSET :{offset_parameter}'
147
+ parameters_counter += 1
139
148
 
140
149
  return f'{query};', parameters
141
150