This package contains Query DTO and Model Enums
Project description
QueryDTO and Related Classes
This repository contains a Python implementation of classes used for querying and filtering data models with the help of the Pydantic library. These classes aim to provide a standardized way to build flexible and reusable query objects, with support for sorting, filtering, pagination, and field population.
Table of Contents
Features
- Model Identification: Enumerate specific models using the
Modelenum class. - Sorting: Specify fields and order (ascending/descending).
- Filtering: Create flexible queries using operators, fields, and values.
- Population: Specify which fields to include in the query.
- Pagination: Limit results by defining page numbers and sizes.
- Logical Operations: Define whether filters use
ANDorORoperations.
Classes
Model Enum
The Model Enum class defines constants for different models or entities.
class Model(Enum):
blog = 1
appliance = 2
brand = 3
product = 4
faq = 5
contact = 6
advice_article = 7
Sort Class
Defines sorting parameters for a query.
class Sort(BaseModel):
field: str # Field to sort by
order: str # Order ('asc' for ascending, 'desc' for descending)
Filter Class
Defines filters to be applied to a query.
class Filter(BaseModel):
operator: str # Logical operator (e.g., 'eq', 'eqi', 'contains', 'notNull', 'and','or')
field: str # Field to filter by
value: str # Value to compare the field with
Populate Class
Specifies fields to include in the query response.
class Populate(BaseModel):
field: str # Field name to populate
Pagination Class
Defines pagination parameters for a query.
class Pagination(BaseModel):
page: int # Current page number
pagesize: int # Number of records per page
QueryDTO Class
The main Data Transfer Object (DTO) class for constructing queries. It includes options for model identification, filters, sorting, pagination, and field population.
class QueryDTO(BaseModel):
model: Optional[int] = None # Entity or module name (from the Model enum)
id: Optional[int] = None # -1 for list, >0 for specific record ID
slug: Optional[str] = None # Slug URLs
sorts: Optional[List[Sort]] = None # List of sorting parameters
filters: Optional[List[Filter]] = None # List of filters
union_filter_operator: Optional[str] = "and" # Logical operator ('and', 'or')
populate: Optional[List[Populate]] = None # Fields to include
pagination: Optional[Pagination] = None # Pagination details
Usage
To use these classes, import them into your project and instantiate them as needed. For example:
from your_module import QueryDTO, Sort, Filter, Populate, Pagination
# Example query
query = QueryDTO(
model=1, # Refers to 'blog'
id=-1, # Fetch a list
sorts=[Sort(field="created_at", order="desc")],
filters=[
Filter(operator="=", field="status", value="published"),
Filter(operator=">=", field="created_at", value="2023-01-01")
],
union_filter_operator="and",
populate=[Populate(field="author")],
pagination=Pagination(page=1, pagesize=10)
)
Installation
- Clone the repository.
- Ensure you have Python 3.7 or later installed.
- Install Pydantic:
pip install pydantic
License
This project is licensed under the MIT License. Feel free to use and modify it as needed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file package_source-1.0.2.tar.gz.
File metadata
- Download URL: package_source-1.0.2.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d48a720fa181d2c1e03f73c6ce18c3e4c14acc87d0aefa1862bf2c8d073c51d
|
|
| MD5 |
2c08e260e6f2a4346f53ca6422b9aa6b
|
|
| BLAKE2b-256 |
df76db2251889c26ca5580fdf46a1fa916e4ea07c8763f49a8133360746bffbe
|
File details
Details for the file package_source-1.0.2-py3-none-any.whl.
File metadata
- Download URL: package_source-1.0.2-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e9c3c97a37e588da256633939814693827d17023b43315aaaa6330daf018b5e
|
|
| MD5 |
a467d4d4e9a0e810370f3c67ce60370a
|
|
| BLAKE2b-256 |
8ff852fdfa4e8931061ec7961b6f37088657f5be2c531fdfc7051d572bab35fe
|