From 1903eaf9a2d533cb782236a47bb68a73bed84c2a Mon Sep 17 00:00:00 2001 From: Kirill Klenov Date: Thu, 27 Jul 2023 14:01:45 +0700 Subject: [PATCH] feat: wip --- muffin_peewee/utils.py | 25 ------------------------- tests/test_utils.py | 23 ----------------------- 2 files changed, 48 deletions(-) delete mode 100644 muffin_peewee/utils.py delete mode 100644 tests/test_utils.py diff --git a/muffin_peewee/utils.py b/muffin_peewee/utils.py deleted file mode 100644 index d0b1d66..0000000 --- a/muffin_peewee/utils.py +++ /dev/null @@ -1,25 +0,0 @@ -from __future__ import annotations - -from typing import Optional, Type, cast - -from peewee import JOIN, Expression, Model, ModelSelect - - -def safe_join( # noqa: PLR0913 - query: ModelSelect, - dest: Type[Model], - join_type: str = JOIN.INNER, - src: Optional[Type[Model]] = None, - on: Optional[Expression] = None, - attr: Optional[str] = None, -) -> ModelSelect: - """Join a model to a query if it is not already joined.""" - - joins = query._joins.get(src) # type: ignore[] - if joins: - on, attr, constructor = query._normalize_join(src, dest, on, attr) # type: ignore[] - for dest_, attr_, constructor_, _ in joins: - if dest_ == dest and attr_ == attr and constructor_ == constructor: - return query - - return cast(ModelSelect, query.join(dest, join_type=join_type, on=on, src=src)) diff --git a/tests/test_utils.py b/tests/test_utils.py deleted file mode 100644 index abea676..0000000 --- a/tests/test_utils.py +++ /dev/null @@ -1,23 +0,0 @@ -import peewee as pw - -from muffin_peewee.utils import safe_join - - -def test_safe_join(): - class Role(pw.Model): - name = pw.CharField() - - class User(pw.Model): - name = pw.CharField() - role = pw.ForeignKeyField(Role) - - query = User.select() - - query = safe_join(query, Role, src=User) - assert str(query) - assert "JOIN" in str(query) - - query = safe_join(query, Role, src=User) - assert str(query) - assert "JOIN" in str(query) - assert str(query).count("JOIN") == 1