Skip to main content

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 Model enum 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 AND or OR operations.

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

  1. Clone the repository.
  2. Ensure you have Python 3.7 or later installed.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

query_handler-1.0.4.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

query_handler-1.0.4-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file query_handler-1.0.4.tar.gz.

File metadata

  • Download URL: query_handler-1.0.4.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for query_handler-1.0.4.tar.gz
Algorithm Hash digest
SHA256 f9c28b44e256c5d7829a8ef03ce6eee86ec134405b226a807d621e03fe11135c
MD5 2e753313b2eb54a03b1e6eb53a1309de
BLAKE2b-256 09c6e7909434ea20bc3414da95fa68a5e8cf32984baeafecc90fabf664aacd1c

See more details on using hashes here.

File details

Details for the file query_handler-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: query_handler-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 3.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for query_handler-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ce70b4d2f72407e92c27bf2b90d2134fcc231ae21da48334f21fc9bcefc15086
MD5 654b85763dcf5befcf1da75c035798d5
BLAKE2b-256 7e34dd94cd8e944040c4719abba558662fca0d3a992e37252285dfa95b1f002c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page