Skip to main content

This package contains base code for all services e.g. 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

ecomm_base-1.1.2.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

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

ecomm_base-1.1.2-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file ecomm_base-1.1.2.tar.gz.

File metadata

  • Download URL: ecomm_base-1.1.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

Hashes for ecomm_base-1.1.2.tar.gz
Algorithm Hash digest
SHA256 5573008cbcd8126ab612435f8c2cd1060352fd5b5821c5e82f085477551483b9
MD5 5db63ef54c9923cc9b528464b427b654
BLAKE2b-256 5283199888e7c5abc9f65519c683e1d84dab3f5e19105cd6cd4ebfba582ed444

See more details on using hashes here.

File details

Details for the file ecomm_base-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: ecomm_base-1.1.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

Hashes for ecomm_base-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 54cde63c7721094de559976fd71c54ac71e1db0191c1c1c89075c74c5ee6247d
MD5 1e59244d6f8253cd573f383d4a9ca2c4
BLAKE2b-256 71a48def21b21e4f42febb05e6abd013b0cbfffffb5a7fe0cfd2901011d520c4

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