From 35068618c4391a411e536a52a9458093e7f41ff5 Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Wed, 27 Aug 2025 09:48:14 -0500 Subject: [PATCH] Fix an MSSQL incompatibility. --- crudkit/dsl.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/crudkit/dsl.py b/crudkit/dsl.py index 552f850..80c5499 100644 --- a/crudkit/dsl.py +++ b/crudkit/dsl.py @@ -1,7 +1,6 @@ from dataclasses import dataclass, field from typing import List, Dict, Any, Optional -from sqlalchemy import asc, desc, select, func -from sqlalchemy.orm import selectinload, joinedload, Load +from sqlalchemy import asc, desc, select, false() @dataclass class QuerySpec: @@ -25,7 +24,17 @@ FILTER_OPS = { } def build_query(Model, spec: QuerySpec, eager_policy=None): - stmt = select(Model).where(Model.deleted.is_(False)) + stmt = select(Model) + + # filter out soft-deleted rows + deleted_attr = getattr(Model, "deleted", None) + if deleted_attr is not None: + stmt = stmt.where(deleted_attr == false()) + else: + is_deleted_attr = getattr(Model, "is_deleted", None) + if is_deleted_attr is not None: + stmt = stmt.where(is_deleted_attr == false()) + # filters for raw_key, val in spec.filters.items(): for op in FILTER_OPS: