Coverage for functions \ flipdare \ search \ core \ filter \ friend_filter.py: 97%
32 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
1#!/usr/bin/env python
2# Copyright (c) 2026 Flipdare Pty Ltd. All rights reserved.
3#
4# This file is part of Flipdare's proprietary software and contains
5# confidential and copyrighted material. Unauthorised copying,
6# modification, distribution, or use of this file is strictly
7# prohibited without prior written permission from Flipdare Pty Ltd.
8#
9# This software includes third-party components licensed under MIT,
10# BSD, and Apache 2.0 licences. See THIRD_PARTY_NOTICES for details.
11#
14from typing import TYPE_CHECKING, override
15from flipdare.generated.schema.search.friend_document_schema import FriendDocumentKey
16from flipdare.search.core.filter._complex_filter import ComplexFilter, Relationship
17from flipdare.search.core.filter._simple_filter import FilterType, SimpleFilter
19if TYPE_CHECKING:
21 from flipdare.search.db.app_friend_search import AppFriendSearch
23__all__ = ["SimpleFriendFilter", "ComplexFriendFilter", "FriendFilterDict"]
26type FriendFilterDict = dict[FriendDocumentKey, FilterType]
29class SimpleFriendFilter(SimpleFilter[FriendDocumentKey]):
30 def __init__(
31 self,
32 uid: str,
33 filters: FriendFilterDict | None = None,
34 ) -> None:
35 all_filters: FriendFilterDict = {FriendDocumentKey.UID: uid}
36 if filters:
37 for key, value in filters.items():
38 all_filters[key] = value
40 super().__init__(filters=all_filters)
41 self._uid = uid
43 @property
44 def uid(self) -> str:
45 return self._uid
48class ComplexFriendFilter(ComplexFilter[FriendDocumentKey]):
49 def __init__(
50 self,
51 uid: str,
52 relationship: Relationship | None = None,
53 filters: FriendFilterDict | None = None,
54 exclude_uid: bool = False,
55 ) -> None:
56 all_filters: FriendFilterDict = {} if exclude_uid else {FriendDocumentKey.UID: uid}
57 if filters:
58 for key, value in filters.items():
59 all_filters[key] = value
61 super().__init__(relationship=relationship, filters=all_filters)
62 self._uid = uid
64 @property
65 @override
66 def uid(self) -> str:
67 return self._uid
69 @override
70 def _prepare(self, friend_search: "AppFriendSearch") -> None:
71 return None