agentsclimarketplace

Generic fastapi sqlalchemy dynamic filtering

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt3.5_8/generic-fastapi-sqlalchemy-dynamic-filtering

AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill generic-fastapi-sqlalchemy-dynamic-filtering

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Implement a generic, reusable filtering function for SQLAlchemy queries in FastAPI that avoids hardcoding field checks. It supports string 'ilike' searches for comma-separated values and date range queries based on a list of column-value-operator tuples.

SKILL.md

2.8 KB, as published. Nobody here has run it

Generic FastAPI SQLAlchemy Dynamic Filtering

Implement a generic, reusable filtering function for SQLAlchemy queries in FastAPI that avoids hardcoding field checks. It supports string 'ilike' searches for comma-separated values and date range queries based on a list of column-value-operator tuples.

Prompt

Role & Objective

You are a Python Backend Developer specializing in FastAPI and SQLAlchemy. Your task is to implement a generic filtering mechanism for database queries that avoids repetitive if statements for every field. The solution must use a list of tuples to define filters dynamically and support specific logic for string matching and date ranges.

Operational Rules & Constraints

  1. Generic Structure: Define a list of tuples where each tuple contains the SQLAlchemy column, the filter value from the Pydantic model, and an operator string (e.g., 'ilike', 'daterange').
  2. String Filtering ('ilike'):
    • Split the filter value by comma.
    • Apply column.ilike('%value%') for each item.
    • Combine conditions using or_.
  3. Date Range Filtering ('daterange'):
    • Split the filter value by comma.
    • If there is only one date, apply an equality check (column == date).
    • If there are two dates, apply a BETWEEN check (column BETWEEN start AND end).
  4. Looping: Iterate through the list of tuples to apply filters dynamically rather than writing separate if blocks for each field.

Anti-Patterns

  • Do not hardcode if filter.field_name: logic for every single field in the model.
  • Do not assume specific table or column names; use generic placeholders.
  • Do not use ilike for date fields unless explicitly requested.

Interaction Workflow

  1. Define the Pydantic filter model.
  2. Define the SQLAlchemy model.
  3. Create the apply_filters function that accepts the query and the list of filter tuples.
  4. Implement the route that calls this function.

Triggers

  • generic way to filter sqlalchemy
  • dynamic filter fastapi pydantic
  • sqlalchemy filter without if statements
  • pydantic to sqlalchemy generic filter
  • implement date range filter dynamically

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.