audex 1.0.7a3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- audex/__init__.py +9 -0
- audex/__main__.py +7 -0
- audex/cli/__init__.py +189 -0
- audex/cli/apis/__init__.py +12 -0
- audex/cli/apis/init/__init__.py +34 -0
- audex/cli/apis/init/gencfg.py +130 -0
- audex/cli/apis/init/setup.py +330 -0
- audex/cli/apis/init/vprgroup.py +125 -0
- audex/cli/apis/serve.py +141 -0
- audex/cli/args.py +356 -0
- audex/cli/exceptions.py +44 -0
- audex/cli/helper/__init__.py +0 -0
- audex/cli/helper/ansi.py +193 -0
- audex/cli/helper/display.py +288 -0
- audex/config/__init__.py +64 -0
- audex/config/core/__init__.py +30 -0
- audex/config/core/app.py +29 -0
- audex/config/core/audio.py +45 -0
- audex/config/core/logging.py +163 -0
- audex/config/core/session.py +11 -0
- audex/config/helper/__init__.py +1 -0
- audex/config/helper/client/__init__.py +1 -0
- audex/config/helper/client/http.py +28 -0
- audex/config/helper/client/websocket.py +21 -0
- audex/config/helper/provider/__init__.py +1 -0
- audex/config/helper/provider/dashscope.py +13 -0
- audex/config/helper/provider/unisound.py +18 -0
- audex/config/helper/provider/xfyun.py +23 -0
- audex/config/infrastructure/__init__.py +31 -0
- audex/config/infrastructure/cache.py +51 -0
- audex/config/infrastructure/database.py +48 -0
- audex/config/infrastructure/recorder.py +32 -0
- audex/config/infrastructure/store.py +19 -0
- audex/config/provider/__init__.py +18 -0
- audex/config/provider/transcription.py +109 -0
- audex/config/provider/vpr.py +99 -0
- audex/container.py +40 -0
- audex/entity/__init__.py +468 -0
- audex/entity/doctor.py +109 -0
- audex/entity/doctor.pyi +51 -0
- audex/entity/fields.py +401 -0
- audex/entity/segment.py +115 -0
- audex/entity/segment.pyi +38 -0
- audex/entity/session.py +133 -0
- audex/entity/session.pyi +47 -0
- audex/entity/utterance.py +142 -0
- audex/entity/utterance.pyi +48 -0
- audex/entity/vp.py +68 -0
- audex/entity/vp.pyi +35 -0
- audex/exceptions.py +157 -0
- audex/filters/__init__.py +692 -0
- audex/filters/generated/__init__.py +21 -0
- audex/filters/generated/doctor.py +987 -0
- audex/filters/generated/segment.py +723 -0
- audex/filters/generated/session.py +978 -0
- audex/filters/generated/utterance.py +939 -0
- audex/filters/generated/vp.py +815 -0
- audex/helper/__init__.py +1 -0
- audex/helper/hash.py +33 -0
- audex/helper/mixin.py +65 -0
- audex/helper/net.py +19 -0
- audex/helper/settings/__init__.py +830 -0
- audex/helper/settings/fields.py +317 -0
- audex/helper/stream.py +153 -0
- audex/injectors/__init__.py +1 -0
- audex/injectors/config.py +12 -0
- audex/injectors/lifespan.py +7 -0
- audex/lib/__init__.py +1 -0
- audex/lib/cache/__init__.py +383 -0
- audex/lib/cache/inmemory.py +513 -0
- audex/lib/database/__init__.py +83 -0
- audex/lib/database/sqlite.py +406 -0
- audex/lib/exporter.py +189 -0
- audex/lib/injectors/__init__.py +1 -0
- audex/lib/injectors/cache.py +25 -0
- audex/lib/injectors/container.py +47 -0
- audex/lib/injectors/exporter.py +26 -0
- audex/lib/injectors/recorder.py +33 -0
- audex/lib/injectors/server.py +17 -0
- audex/lib/injectors/session.py +18 -0
- audex/lib/injectors/sqlite.py +24 -0
- audex/lib/injectors/store.py +13 -0
- audex/lib/injectors/transcription.py +42 -0
- audex/lib/injectors/usb.py +12 -0
- audex/lib/injectors/vpr.py +65 -0
- audex/lib/injectors/wifi.py +7 -0
- audex/lib/recorder.py +844 -0
- audex/lib/repos/__init__.py +149 -0
- audex/lib/repos/container.py +23 -0
- audex/lib/repos/database/__init__.py +1 -0
- audex/lib/repos/database/sqlite.py +672 -0
- audex/lib/repos/decorators.py +74 -0
- audex/lib/repos/doctor.py +286 -0
- audex/lib/repos/segment.py +302 -0
- audex/lib/repos/session.py +285 -0
- audex/lib/repos/tables/__init__.py +70 -0
- audex/lib/repos/tables/doctor.py +137 -0
- audex/lib/repos/tables/segment.py +113 -0
- audex/lib/repos/tables/session.py +140 -0
- audex/lib/repos/tables/utterance.py +131 -0
- audex/lib/repos/tables/vp.py +102 -0
- audex/lib/repos/utterance.py +288 -0
- audex/lib/repos/vp.py +286 -0
- audex/lib/restful.py +251 -0
- audex/lib/server/__init__.py +97 -0
- audex/lib/server/auth.py +98 -0
- audex/lib/server/handlers.py +248 -0
- audex/lib/server/templates/index.html.j2 +226 -0
- audex/lib/server/templates/login.html.j2 +111 -0
- audex/lib/server/templates/static/script.js +68 -0
- audex/lib/server/templates/static/style.css +579 -0
- audex/lib/server/types.py +123 -0
- audex/lib/session.py +503 -0
- audex/lib/store/__init__.py +238 -0
- audex/lib/store/localfile.py +411 -0
- audex/lib/transcription/__init__.py +33 -0
- audex/lib/transcription/dashscope.py +525 -0
- audex/lib/transcription/events.py +62 -0
- audex/lib/usb.py +554 -0
- audex/lib/vpr/__init__.py +38 -0
- audex/lib/vpr/unisound/__init__.py +185 -0
- audex/lib/vpr/unisound/types.py +469 -0
- audex/lib/vpr/xfyun/__init__.py +483 -0
- audex/lib/vpr/xfyun/types.py +679 -0
- audex/lib/websocket/__init__.py +8 -0
- audex/lib/websocket/connection.py +485 -0
- audex/lib/websocket/pool.py +991 -0
- audex/lib/wifi.py +1146 -0
- audex/lifespan.py +75 -0
- audex/service/__init__.py +27 -0
- audex/service/decorators.py +73 -0
- audex/service/doctor/__init__.py +652 -0
- audex/service/doctor/const.py +36 -0
- audex/service/doctor/exceptions.py +96 -0
- audex/service/doctor/types.py +54 -0
- audex/service/export/__init__.py +236 -0
- audex/service/export/const.py +17 -0
- audex/service/export/exceptions.py +34 -0
- audex/service/export/types.py +21 -0
- audex/service/injectors/__init__.py +1 -0
- audex/service/injectors/container.py +53 -0
- audex/service/injectors/doctor.py +34 -0
- audex/service/injectors/export.py +27 -0
- audex/service/injectors/session.py +49 -0
- audex/service/session/__init__.py +754 -0
- audex/service/session/const.py +34 -0
- audex/service/session/exceptions.py +67 -0
- audex/service/session/types.py +91 -0
- audex/types.py +39 -0
- audex/utils.py +287 -0
- audex/valueobj/__init__.py +81 -0
- audex/valueobj/common/__init__.py +1 -0
- audex/valueobj/common/auth.py +84 -0
- audex/valueobj/common/email.py +16 -0
- audex/valueobj/common/ops.py +22 -0
- audex/valueobj/common/phone.py +84 -0
- audex/valueobj/common/version.py +72 -0
- audex/valueobj/session.py +19 -0
- audex/valueobj/utterance.py +15 -0
- audex/view/__init__.py +51 -0
- audex/view/container.py +17 -0
- audex/view/decorators.py +303 -0
- audex/view/pages/__init__.py +1 -0
- audex/view/pages/dashboard/__init__.py +286 -0
- audex/view/pages/dashboard/wifi.py +407 -0
- audex/view/pages/login.py +110 -0
- audex/view/pages/recording.py +348 -0
- audex/view/pages/register.py +202 -0
- audex/view/pages/sessions/__init__.py +196 -0
- audex/view/pages/sessions/details.py +224 -0
- audex/view/pages/sessions/export.py +443 -0
- audex/view/pages/settings.py +374 -0
- audex/view/pages/voiceprint/__init__.py +1 -0
- audex/view/pages/voiceprint/enroll.py +195 -0
- audex/view/pages/voiceprint/update.py +195 -0
- audex/view/static/css/dashboard.css +452 -0
- audex/view/static/css/glass.css +22 -0
- audex/view/static/css/global.css +541 -0
- audex/view/static/css/login.css +386 -0
- audex/view/static/css/recording.css +439 -0
- audex/view/static/css/register.css +293 -0
- audex/view/static/css/sessions/styles.css +501 -0
- audex/view/static/css/settings.css +186 -0
- audex/view/static/css/voiceprint/enroll.css +43 -0
- audex/view/static/css/voiceprint/styles.css +209 -0
- audex/view/static/css/voiceprint/update.css +44 -0
- audex/view/static/images/logo.svg +95 -0
- audex/view/static/js/recording.js +42 -0
- audex-1.0.7a3.dist-info/METADATA +361 -0
- audex-1.0.7a3.dist-info/RECORD +192 -0
- audex-1.0.7a3.dist-info/WHEEL +4 -0
- audex-1.0.7a3.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,978 @@
|
|
|
1
|
+
# This file is auto-generated by PrototypeX filter generator.
|
|
2
|
+
# Do not edit manually - changes will be overwritten.
|
|
3
|
+
# Regenerate using: python -m scripts.gen_filters gen
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import datetime
|
|
8
|
+
import typing as t
|
|
9
|
+
|
|
10
|
+
from audex.entity.session import Session
|
|
11
|
+
from audex.filters import FieldFilter
|
|
12
|
+
from audex.filters import Filter
|
|
13
|
+
from audex.filters import FilterBuilder
|
|
14
|
+
from audex.filters import StringBackedFieldFilter
|
|
15
|
+
from audex.filters import StringFieldFilter
|
|
16
|
+
from audex.valueobj.session import SessionStatus
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SessionFilterBuilder(FilterBuilder[Session]):
|
|
20
|
+
"""Session filter builder with full type hints and IDE support.
|
|
21
|
+
|
|
22
|
+
This class is auto-generated. Do not edit manually.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
class _IdField(StringFieldFilter):
|
|
26
|
+
"""Chainable id filter with type-safe operations."""
|
|
27
|
+
|
|
28
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
29
|
+
super().__init__("id", object.__getattribute__(builder, "_filter"))
|
|
30
|
+
self._parent_builder = builder
|
|
31
|
+
|
|
32
|
+
def eq(self, value: str) -> SessionFilterBuilder:
|
|
33
|
+
super().eq(value)
|
|
34
|
+
return self._parent_builder
|
|
35
|
+
|
|
36
|
+
def ne(self, value: str) -> SessionFilterBuilder:
|
|
37
|
+
super().ne(value)
|
|
38
|
+
return self._parent_builder
|
|
39
|
+
|
|
40
|
+
def gt(self, value: str) -> SessionFilterBuilder:
|
|
41
|
+
super().gt(value)
|
|
42
|
+
return self._parent_builder
|
|
43
|
+
|
|
44
|
+
def lt(self, value: str) -> SessionFilterBuilder:
|
|
45
|
+
super().lt(value)
|
|
46
|
+
return self._parent_builder
|
|
47
|
+
|
|
48
|
+
def gte(self, value: str) -> SessionFilterBuilder:
|
|
49
|
+
super().gte(value)
|
|
50
|
+
return self._parent_builder
|
|
51
|
+
|
|
52
|
+
def lte(self, value: str) -> SessionFilterBuilder:
|
|
53
|
+
super().lte(value)
|
|
54
|
+
return self._parent_builder
|
|
55
|
+
|
|
56
|
+
def in_(self, values: t.Sequence[str]) -> SessionFilterBuilder:
|
|
57
|
+
super().in_(values)
|
|
58
|
+
return self._parent_builder
|
|
59
|
+
|
|
60
|
+
def nin(self, values: t.Sequence[str]) -> SessionFilterBuilder:
|
|
61
|
+
super().nin(values)
|
|
62
|
+
return self._parent_builder
|
|
63
|
+
|
|
64
|
+
def between(self, value1: str, value2: str) -> SessionFilterBuilder:
|
|
65
|
+
super().between(value1, value2)
|
|
66
|
+
return self._parent_builder
|
|
67
|
+
|
|
68
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
69
|
+
super().is_null()
|
|
70
|
+
return self._parent_builder
|
|
71
|
+
|
|
72
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
73
|
+
super().is_not_null()
|
|
74
|
+
return self._parent_builder
|
|
75
|
+
|
|
76
|
+
def asc(self) -> SessionFilterBuilder:
|
|
77
|
+
super().asc()
|
|
78
|
+
return self._parent_builder
|
|
79
|
+
|
|
80
|
+
def desc(self) -> SessionFilterBuilder:
|
|
81
|
+
super().desc()
|
|
82
|
+
return self._parent_builder
|
|
83
|
+
|
|
84
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
85
|
+
super().contains(value)
|
|
86
|
+
return self._parent_builder
|
|
87
|
+
|
|
88
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
89
|
+
super().startswith(value)
|
|
90
|
+
return self._parent_builder
|
|
91
|
+
|
|
92
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
93
|
+
super().endswith(value)
|
|
94
|
+
return self._parent_builder
|
|
95
|
+
|
|
96
|
+
class _CreatedAtField(FieldFilter[datetime.datetime]):
|
|
97
|
+
"""Chainable created_at filter with type-safe operations."""
|
|
98
|
+
|
|
99
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
100
|
+
super().__init__("created_at", object.__getattribute__(builder, "_filter"))
|
|
101
|
+
self._parent_builder = builder
|
|
102
|
+
|
|
103
|
+
def eq(self, value: datetime.datetime) -> SessionFilterBuilder:
|
|
104
|
+
super().eq(value)
|
|
105
|
+
return self._parent_builder
|
|
106
|
+
|
|
107
|
+
def ne(self, value: datetime.datetime) -> SessionFilterBuilder:
|
|
108
|
+
super().ne(value)
|
|
109
|
+
return self._parent_builder
|
|
110
|
+
|
|
111
|
+
def gt(self, value: datetime.datetime) -> SessionFilterBuilder:
|
|
112
|
+
super().gt(value)
|
|
113
|
+
return self._parent_builder
|
|
114
|
+
|
|
115
|
+
def lt(self, value: datetime.datetime) -> SessionFilterBuilder:
|
|
116
|
+
super().lt(value)
|
|
117
|
+
return self._parent_builder
|
|
118
|
+
|
|
119
|
+
def gte(self, value: datetime.datetime) -> SessionFilterBuilder:
|
|
120
|
+
super().gte(value)
|
|
121
|
+
return self._parent_builder
|
|
122
|
+
|
|
123
|
+
def lte(self, value: datetime.datetime) -> SessionFilterBuilder:
|
|
124
|
+
super().lte(value)
|
|
125
|
+
return self._parent_builder
|
|
126
|
+
|
|
127
|
+
def in_(self, values: t.Sequence[datetime.datetime]) -> SessionFilterBuilder:
|
|
128
|
+
super().in_(values)
|
|
129
|
+
return self._parent_builder
|
|
130
|
+
|
|
131
|
+
def nin(self, values: t.Sequence[datetime.datetime]) -> SessionFilterBuilder:
|
|
132
|
+
super().nin(values)
|
|
133
|
+
return self._parent_builder
|
|
134
|
+
|
|
135
|
+
def between(
|
|
136
|
+
self, value1: datetime.datetime, value2: datetime.datetime
|
|
137
|
+
) -> SessionFilterBuilder:
|
|
138
|
+
super().between(value1, value2)
|
|
139
|
+
return self._parent_builder
|
|
140
|
+
|
|
141
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
142
|
+
super().is_null()
|
|
143
|
+
return self._parent_builder
|
|
144
|
+
|
|
145
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
146
|
+
super().is_not_null()
|
|
147
|
+
return self._parent_builder
|
|
148
|
+
|
|
149
|
+
def asc(self) -> SessionFilterBuilder:
|
|
150
|
+
super().asc()
|
|
151
|
+
return self._parent_builder
|
|
152
|
+
|
|
153
|
+
def desc(self) -> SessionFilterBuilder:
|
|
154
|
+
super().desc()
|
|
155
|
+
return self._parent_builder
|
|
156
|
+
|
|
157
|
+
class _UpdatedAtField(FieldFilter[datetime.datetime | None]):
|
|
158
|
+
"""Chainable updated_at filter with type-safe operations."""
|
|
159
|
+
|
|
160
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
161
|
+
super().__init__("updated_at", object.__getattribute__(builder, "_filter"))
|
|
162
|
+
self._parent_builder = builder
|
|
163
|
+
|
|
164
|
+
def eq(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
165
|
+
super().eq(value)
|
|
166
|
+
return self._parent_builder
|
|
167
|
+
|
|
168
|
+
def ne(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
169
|
+
super().ne(value)
|
|
170
|
+
return self._parent_builder
|
|
171
|
+
|
|
172
|
+
def gt(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
173
|
+
super().gt(value)
|
|
174
|
+
return self._parent_builder
|
|
175
|
+
|
|
176
|
+
def lt(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
177
|
+
super().lt(value)
|
|
178
|
+
return self._parent_builder
|
|
179
|
+
|
|
180
|
+
def gte(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
181
|
+
super().gte(value)
|
|
182
|
+
return self._parent_builder
|
|
183
|
+
|
|
184
|
+
def lte(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
185
|
+
super().lte(value)
|
|
186
|
+
return self._parent_builder
|
|
187
|
+
|
|
188
|
+
def in_(self, values: t.Sequence[datetime.datetime | None]) -> SessionFilterBuilder:
|
|
189
|
+
super().in_(values)
|
|
190
|
+
return self._parent_builder
|
|
191
|
+
|
|
192
|
+
def nin(self, values: t.Sequence[datetime.datetime | None]) -> SessionFilterBuilder:
|
|
193
|
+
super().nin(values)
|
|
194
|
+
return self._parent_builder
|
|
195
|
+
|
|
196
|
+
def between(
|
|
197
|
+
self, value1: datetime.datetime | None, value2: datetime.datetime | None
|
|
198
|
+
) -> SessionFilterBuilder:
|
|
199
|
+
super().between(value1, value2)
|
|
200
|
+
return self._parent_builder
|
|
201
|
+
|
|
202
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
203
|
+
super().is_null()
|
|
204
|
+
return self._parent_builder
|
|
205
|
+
|
|
206
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
207
|
+
super().is_not_null()
|
|
208
|
+
return self._parent_builder
|
|
209
|
+
|
|
210
|
+
def asc(self) -> SessionFilterBuilder:
|
|
211
|
+
super().asc()
|
|
212
|
+
return self._parent_builder
|
|
213
|
+
|
|
214
|
+
def desc(self) -> SessionFilterBuilder:
|
|
215
|
+
super().desc()
|
|
216
|
+
return self._parent_builder
|
|
217
|
+
|
|
218
|
+
class _DoctorIdField(StringFieldFilter):
|
|
219
|
+
"""Chainable doctor_id filter with type-safe operations."""
|
|
220
|
+
|
|
221
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
222
|
+
super().__init__("doctor_id", object.__getattribute__(builder, "_filter"))
|
|
223
|
+
self._parent_builder = builder
|
|
224
|
+
|
|
225
|
+
def eq(self, value: str) -> SessionFilterBuilder:
|
|
226
|
+
super().eq(value)
|
|
227
|
+
return self._parent_builder
|
|
228
|
+
|
|
229
|
+
def ne(self, value: str) -> SessionFilterBuilder:
|
|
230
|
+
super().ne(value)
|
|
231
|
+
return self._parent_builder
|
|
232
|
+
|
|
233
|
+
def gt(self, value: str) -> SessionFilterBuilder:
|
|
234
|
+
super().gt(value)
|
|
235
|
+
return self._parent_builder
|
|
236
|
+
|
|
237
|
+
def lt(self, value: str) -> SessionFilterBuilder:
|
|
238
|
+
super().lt(value)
|
|
239
|
+
return self._parent_builder
|
|
240
|
+
|
|
241
|
+
def gte(self, value: str) -> SessionFilterBuilder:
|
|
242
|
+
super().gte(value)
|
|
243
|
+
return self._parent_builder
|
|
244
|
+
|
|
245
|
+
def lte(self, value: str) -> SessionFilterBuilder:
|
|
246
|
+
super().lte(value)
|
|
247
|
+
return self._parent_builder
|
|
248
|
+
|
|
249
|
+
def in_(self, values: t.Sequence[str]) -> SessionFilterBuilder:
|
|
250
|
+
super().in_(values)
|
|
251
|
+
return self._parent_builder
|
|
252
|
+
|
|
253
|
+
def nin(self, values: t.Sequence[str]) -> SessionFilterBuilder:
|
|
254
|
+
super().nin(values)
|
|
255
|
+
return self._parent_builder
|
|
256
|
+
|
|
257
|
+
def between(self, value1: str, value2: str) -> SessionFilterBuilder:
|
|
258
|
+
super().between(value1, value2)
|
|
259
|
+
return self._parent_builder
|
|
260
|
+
|
|
261
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
262
|
+
super().is_null()
|
|
263
|
+
return self._parent_builder
|
|
264
|
+
|
|
265
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
266
|
+
super().is_not_null()
|
|
267
|
+
return self._parent_builder
|
|
268
|
+
|
|
269
|
+
def asc(self) -> SessionFilterBuilder:
|
|
270
|
+
super().asc()
|
|
271
|
+
return self._parent_builder
|
|
272
|
+
|
|
273
|
+
def desc(self) -> SessionFilterBuilder:
|
|
274
|
+
super().desc()
|
|
275
|
+
return self._parent_builder
|
|
276
|
+
|
|
277
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
278
|
+
super().contains(value)
|
|
279
|
+
return self._parent_builder
|
|
280
|
+
|
|
281
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
282
|
+
super().startswith(value)
|
|
283
|
+
return self._parent_builder
|
|
284
|
+
|
|
285
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
286
|
+
super().endswith(value)
|
|
287
|
+
return self._parent_builder
|
|
288
|
+
|
|
289
|
+
class _PatientNameField(StringFieldFilter):
|
|
290
|
+
"""Chainable patient_name filter with type-safe operations."""
|
|
291
|
+
|
|
292
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
293
|
+
super().__init__("patient_name", object.__getattribute__(builder, "_filter"))
|
|
294
|
+
self._parent_builder = builder
|
|
295
|
+
|
|
296
|
+
def eq(self, value: str | None) -> SessionFilterBuilder:
|
|
297
|
+
super().eq(value)
|
|
298
|
+
return self._parent_builder
|
|
299
|
+
|
|
300
|
+
def ne(self, value: str | None) -> SessionFilterBuilder:
|
|
301
|
+
super().ne(value)
|
|
302
|
+
return self._parent_builder
|
|
303
|
+
|
|
304
|
+
def gt(self, value: str | None) -> SessionFilterBuilder:
|
|
305
|
+
super().gt(value)
|
|
306
|
+
return self._parent_builder
|
|
307
|
+
|
|
308
|
+
def lt(self, value: str | None) -> SessionFilterBuilder:
|
|
309
|
+
super().lt(value)
|
|
310
|
+
return self._parent_builder
|
|
311
|
+
|
|
312
|
+
def gte(self, value: str | None) -> SessionFilterBuilder:
|
|
313
|
+
super().gte(value)
|
|
314
|
+
return self._parent_builder
|
|
315
|
+
|
|
316
|
+
def lte(self, value: str | None) -> SessionFilterBuilder:
|
|
317
|
+
super().lte(value)
|
|
318
|
+
return self._parent_builder
|
|
319
|
+
|
|
320
|
+
def in_(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
321
|
+
super().in_(values)
|
|
322
|
+
return self._parent_builder
|
|
323
|
+
|
|
324
|
+
def nin(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
325
|
+
super().nin(values)
|
|
326
|
+
return self._parent_builder
|
|
327
|
+
|
|
328
|
+
def between(self, value1: str | None, value2: str | None) -> SessionFilterBuilder:
|
|
329
|
+
super().between(value1, value2)
|
|
330
|
+
return self._parent_builder
|
|
331
|
+
|
|
332
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
333
|
+
super().is_null()
|
|
334
|
+
return self._parent_builder
|
|
335
|
+
|
|
336
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
337
|
+
super().is_not_null()
|
|
338
|
+
return self._parent_builder
|
|
339
|
+
|
|
340
|
+
def asc(self) -> SessionFilterBuilder:
|
|
341
|
+
super().asc()
|
|
342
|
+
return self._parent_builder
|
|
343
|
+
|
|
344
|
+
def desc(self) -> SessionFilterBuilder:
|
|
345
|
+
super().desc()
|
|
346
|
+
return self._parent_builder
|
|
347
|
+
|
|
348
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
349
|
+
super().contains(value)
|
|
350
|
+
return self._parent_builder
|
|
351
|
+
|
|
352
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
353
|
+
super().startswith(value)
|
|
354
|
+
return self._parent_builder
|
|
355
|
+
|
|
356
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
357
|
+
super().endswith(value)
|
|
358
|
+
return self._parent_builder
|
|
359
|
+
|
|
360
|
+
class _ClinicNumberField(StringFieldFilter):
|
|
361
|
+
"""Chainable clinic_number filter with type-safe operations."""
|
|
362
|
+
|
|
363
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
364
|
+
super().__init__("clinic_number", object.__getattribute__(builder, "_filter"))
|
|
365
|
+
self._parent_builder = builder
|
|
366
|
+
|
|
367
|
+
def eq(self, value: str | None) -> SessionFilterBuilder:
|
|
368
|
+
super().eq(value)
|
|
369
|
+
return self._parent_builder
|
|
370
|
+
|
|
371
|
+
def ne(self, value: str | None) -> SessionFilterBuilder:
|
|
372
|
+
super().ne(value)
|
|
373
|
+
return self._parent_builder
|
|
374
|
+
|
|
375
|
+
def gt(self, value: str | None) -> SessionFilterBuilder:
|
|
376
|
+
super().gt(value)
|
|
377
|
+
return self._parent_builder
|
|
378
|
+
|
|
379
|
+
def lt(self, value: str | None) -> SessionFilterBuilder:
|
|
380
|
+
super().lt(value)
|
|
381
|
+
return self._parent_builder
|
|
382
|
+
|
|
383
|
+
def gte(self, value: str | None) -> SessionFilterBuilder:
|
|
384
|
+
super().gte(value)
|
|
385
|
+
return self._parent_builder
|
|
386
|
+
|
|
387
|
+
def lte(self, value: str | None) -> SessionFilterBuilder:
|
|
388
|
+
super().lte(value)
|
|
389
|
+
return self._parent_builder
|
|
390
|
+
|
|
391
|
+
def in_(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
392
|
+
super().in_(values)
|
|
393
|
+
return self._parent_builder
|
|
394
|
+
|
|
395
|
+
def nin(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
396
|
+
super().nin(values)
|
|
397
|
+
return self._parent_builder
|
|
398
|
+
|
|
399
|
+
def between(self, value1: str | None, value2: str | None) -> SessionFilterBuilder:
|
|
400
|
+
super().between(value1, value2)
|
|
401
|
+
return self._parent_builder
|
|
402
|
+
|
|
403
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
404
|
+
super().is_null()
|
|
405
|
+
return self._parent_builder
|
|
406
|
+
|
|
407
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
408
|
+
super().is_not_null()
|
|
409
|
+
return self._parent_builder
|
|
410
|
+
|
|
411
|
+
def asc(self) -> SessionFilterBuilder:
|
|
412
|
+
super().asc()
|
|
413
|
+
return self._parent_builder
|
|
414
|
+
|
|
415
|
+
def desc(self) -> SessionFilterBuilder:
|
|
416
|
+
super().desc()
|
|
417
|
+
return self._parent_builder
|
|
418
|
+
|
|
419
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
420
|
+
super().contains(value)
|
|
421
|
+
return self._parent_builder
|
|
422
|
+
|
|
423
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
424
|
+
super().startswith(value)
|
|
425
|
+
return self._parent_builder
|
|
426
|
+
|
|
427
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
428
|
+
super().endswith(value)
|
|
429
|
+
return self._parent_builder
|
|
430
|
+
|
|
431
|
+
class _MedicalRecordNumberField(StringFieldFilter):
|
|
432
|
+
"""Chainable medical_record_number filter with type-safe
|
|
433
|
+
operations."""
|
|
434
|
+
|
|
435
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
436
|
+
super().__init__("medical_record_number", object.__getattribute__(builder, "_filter"))
|
|
437
|
+
self._parent_builder = builder
|
|
438
|
+
|
|
439
|
+
def eq(self, value: str | None) -> SessionFilterBuilder:
|
|
440
|
+
super().eq(value)
|
|
441
|
+
return self._parent_builder
|
|
442
|
+
|
|
443
|
+
def ne(self, value: str | None) -> SessionFilterBuilder:
|
|
444
|
+
super().ne(value)
|
|
445
|
+
return self._parent_builder
|
|
446
|
+
|
|
447
|
+
def gt(self, value: str | None) -> SessionFilterBuilder:
|
|
448
|
+
super().gt(value)
|
|
449
|
+
return self._parent_builder
|
|
450
|
+
|
|
451
|
+
def lt(self, value: str | None) -> SessionFilterBuilder:
|
|
452
|
+
super().lt(value)
|
|
453
|
+
return self._parent_builder
|
|
454
|
+
|
|
455
|
+
def gte(self, value: str | None) -> SessionFilterBuilder:
|
|
456
|
+
super().gte(value)
|
|
457
|
+
return self._parent_builder
|
|
458
|
+
|
|
459
|
+
def lte(self, value: str | None) -> SessionFilterBuilder:
|
|
460
|
+
super().lte(value)
|
|
461
|
+
return self._parent_builder
|
|
462
|
+
|
|
463
|
+
def in_(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
464
|
+
super().in_(values)
|
|
465
|
+
return self._parent_builder
|
|
466
|
+
|
|
467
|
+
def nin(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
468
|
+
super().nin(values)
|
|
469
|
+
return self._parent_builder
|
|
470
|
+
|
|
471
|
+
def between(self, value1: str | None, value2: str | None) -> SessionFilterBuilder:
|
|
472
|
+
super().between(value1, value2)
|
|
473
|
+
return self._parent_builder
|
|
474
|
+
|
|
475
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
476
|
+
super().is_null()
|
|
477
|
+
return self._parent_builder
|
|
478
|
+
|
|
479
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
480
|
+
super().is_not_null()
|
|
481
|
+
return self._parent_builder
|
|
482
|
+
|
|
483
|
+
def asc(self) -> SessionFilterBuilder:
|
|
484
|
+
super().asc()
|
|
485
|
+
return self._parent_builder
|
|
486
|
+
|
|
487
|
+
def desc(self) -> SessionFilterBuilder:
|
|
488
|
+
super().desc()
|
|
489
|
+
return self._parent_builder
|
|
490
|
+
|
|
491
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
492
|
+
super().contains(value)
|
|
493
|
+
return self._parent_builder
|
|
494
|
+
|
|
495
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
496
|
+
super().startswith(value)
|
|
497
|
+
return self._parent_builder
|
|
498
|
+
|
|
499
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
500
|
+
super().endswith(value)
|
|
501
|
+
return self._parent_builder
|
|
502
|
+
|
|
503
|
+
class _DiagnosisField(StringFieldFilter):
|
|
504
|
+
"""Chainable diagnosis filter with type-safe operations."""
|
|
505
|
+
|
|
506
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
507
|
+
super().__init__("diagnosis", object.__getattribute__(builder, "_filter"))
|
|
508
|
+
self._parent_builder = builder
|
|
509
|
+
|
|
510
|
+
def eq(self, value: str | None) -> SessionFilterBuilder:
|
|
511
|
+
super().eq(value)
|
|
512
|
+
return self._parent_builder
|
|
513
|
+
|
|
514
|
+
def ne(self, value: str | None) -> SessionFilterBuilder:
|
|
515
|
+
super().ne(value)
|
|
516
|
+
return self._parent_builder
|
|
517
|
+
|
|
518
|
+
def gt(self, value: str | None) -> SessionFilterBuilder:
|
|
519
|
+
super().gt(value)
|
|
520
|
+
return self._parent_builder
|
|
521
|
+
|
|
522
|
+
def lt(self, value: str | None) -> SessionFilterBuilder:
|
|
523
|
+
super().lt(value)
|
|
524
|
+
return self._parent_builder
|
|
525
|
+
|
|
526
|
+
def gte(self, value: str | None) -> SessionFilterBuilder:
|
|
527
|
+
super().gte(value)
|
|
528
|
+
return self._parent_builder
|
|
529
|
+
|
|
530
|
+
def lte(self, value: str | None) -> SessionFilterBuilder:
|
|
531
|
+
super().lte(value)
|
|
532
|
+
return self._parent_builder
|
|
533
|
+
|
|
534
|
+
def in_(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
535
|
+
super().in_(values)
|
|
536
|
+
return self._parent_builder
|
|
537
|
+
|
|
538
|
+
def nin(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
539
|
+
super().nin(values)
|
|
540
|
+
return self._parent_builder
|
|
541
|
+
|
|
542
|
+
def between(self, value1: str | None, value2: str | None) -> SessionFilterBuilder:
|
|
543
|
+
super().between(value1, value2)
|
|
544
|
+
return self._parent_builder
|
|
545
|
+
|
|
546
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
547
|
+
super().is_null()
|
|
548
|
+
return self._parent_builder
|
|
549
|
+
|
|
550
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
551
|
+
super().is_not_null()
|
|
552
|
+
return self._parent_builder
|
|
553
|
+
|
|
554
|
+
def asc(self) -> SessionFilterBuilder:
|
|
555
|
+
super().asc()
|
|
556
|
+
return self._parent_builder
|
|
557
|
+
|
|
558
|
+
def desc(self) -> SessionFilterBuilder:
|
|
559
|
+
super().desc()
|
|
560
|
+
return self._parent_builder
|
|
561
|
+
|
|
562
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
563
|
+
super().contains(value)
|
|
564
|
+
return self._parent_builder
|
|
565
|
+
|
|
566
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
567
|
+
super().startswith(value)
|
|
568
|
+
return self._parent_builder
|
|
569
|
+
|
|
570
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
571
|
+
super().endswith(value)
|
|
572
|
+
return self._parent_builder
|
|
573
|
+
|
|
574
|
+
class _StatusField(StringBackedFieldFilter[SessionStatus]):
|
|
575
|
+
"""Chainable status filter with type-safe operations."""
|
|
576
|
+
|
|
577
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
578
|
+
super().__init__("status", object.__getattribute__(builder, "_filter"))
|
|
579
|
+
self._parent_builder = builder
|
|
580
|
+
|
|
581
|
+
def eq(self, value: SessionStatus) -> SessionFilterBuilder:
|
|
582
|
+
super().eq(value)
|
|
583
|
+
return self._parent_builder
|
|
584
|
+
|
|
585
|
+
def ne(self, value: SessionStatus) -> SessionFilterBuilder:
|
|
586
|
+
super().ne(value)
|
|
587
|
+
return self._parent_builder
|
|
588
|
+
|
|
589
|
+
def gt(self, value: SessionStatus) -> SessionFilterBuilder:
|
|
590
|
+
super().gt(value)
|
|
591
|
+
return self._parent_builder
|
|
592
|
+
|
|
593
|
+
def lt(self, value: SessionStatus) -> SessionFilterBuilder:
|
|
594
|
+
super().lt(value)
|
|
595
|
+
return self._parent_builder
|
|
596
|
+
|
|
597
|
+
def gte(self, value: SessionStatus) -> SessionFilterBuilder:
|
|
598
|
+
super().gte(value)
|
|
599
|
+
return self._parent_builder
|
|
600
|
+
|
|
601
|
+
def lte(self, value: SessionStatus) -> SessionFilterBuilder:
|
|
602
|
+
super().lte(value)
|
|
603
|
+
return self._parent_builder
|
|
604
|
+
|
|
605
|
+
def in_(self, values: t.Sequence[SessionStatus]) -> SessionFilterBuilder:
|
|
606
|
+
super().in_(values)
|
|
607
|
+
return self._parent_builder
|
|
608
|
+
|
|
609
|
+
def nin(self, values: t.Sequence[SessionStatus]) -> SessionFilterBuilder:
|
|
610
|
+
super().nin(values)
|
|
611
|
+
return self._parent_builder
|
|
612
|
+
|
|
613
|
+
def between(self, value1: SessionStatus, value2: SessionStatus) -> SessionFilterBuilder:
|
|
614
|
+
super().between(value1, value2)
|
|
615
|
+
return self._parent_builder
|
|
616
|
+
|
|
617
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
618
|
+
super().is_null()
|
|
619
|
+
return self._parent_builder
|
|
620
|
+
|
|
621
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
622
|
+
super().is_not_null()
|
|
623
|
+
return self._parent_builder
|
|
624
|
+
|
|
625
|
+
def asc(self) -> SessionFilterBuilder:
|
|
626
|
+
super().asc()
|
|
627
|
+
return self._parent_builder
|
|
628
|
+
|
|
629
|
+
def desc(self) -> SessionFilterBuilder:
|
|
630
|
+
super().desc()
|
|
631
|
+
return self._parent_builder
|
|
632
|
+
|
|
633
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
634
|
+
super().contains(value)
|
|
635
|
+
return self._parent_builder
|
|
636
|
+
|
|
637
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
638
|
+
super().startswith(value)
|
|
639
|
+
return self._parent_builder
|
|
640
|
+
|
|
641
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
642
|
+
super().endswith(value)
|
|
643
|
+
return self._parent_builder
|
|
644
|
+
|
|
645
|
+
class _StartedAtField(FieldFilter[datetime.datetime | None]):
|
|
646
|
+
"""Chainable started_at filter with type-safe operations."""
|
|
647
|
+
|
|
648
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
649
|
+
super().__init__("started_at", object.__getattribute__(builder, "_filter"))
|
|
650
|
+
self._parent_builder = builder
|
|
651
|
+
|
|
652
|
+
def eq(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
653
|
+
super().eq(value)
|
|
654
|
+
return self._parent_builder
|
|
655
|
+
|
|
656
|
+
def ne(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
657
|
+
super().ne(value)
|
|
658
|
+
return self._parent_builder
|
|
659
|
+
|
|
660
|
+
def gt(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
661
|
+
super().gt(value)
|
|
662
|
+
return self._parent_builder
|
|
663
|
+
|
|
664
|
+
def lt(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
665
|
+
super().lt(value)
|
|
666
|
+
return self._parent_builder
|
|
667
|
+
|
|
668
|
+
def gte(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
669
|
+
super().gte(value)
|
|
670
|
+
return self._parent_builder
|
|
671
|
+
|
|
672
|
+
def lte(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
673
|
+
super().lte(value)
|
|
674
|
+
return self._parent_builder
|
|
675
|
+
|
|
676
|
+
def in_(self, values: t.Sequence[datetime.datetime | None]) -> SessionFilterBuilder:
|
|
677
|
+
super().in_(values)
|
|
678
|
+
return self._parent_builder
|
|
679
|
+
|
|
680
|
+
def nin(self, values: t.Sequence[datetime.datetime | None]) -> SessionFilterBuilder:
|
|
681
|
+
super().nin(values)
|
|
682
|
+
return self._parent_builder
|
|
683
|
+
|
|
684
|
+
def between(
|
|
685
|
+
self, value1: datetime.datetime | None, value2: datetime.datetime | None
|
|
686
|
+
) -> SessionFilterBuilder:
|
|
687
|
+
super().between(value1, value2)
|
|
688
|
+
return self._parent_builder
|
|
689
|
+
|
|
690
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
691
|
+
super().is_null()
|
|
692
|
+
return self._parent_builder
|
|
693
|
+
|
|
694
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
695
|
+
super().is_not_null()
|
|
696
|
+
return self._parent_builder
|
|
697
|
+
|
|
698
|
+
def asc(self) -> SessionFilterBuilder:
|
|
699
|
+
super().asc()
|
|
700
|
+
return self._parent_builder
|
|
701
|
+
|
|
702
|
+
def desc(self) -> SessionFilterBuilder:
|
|
703
|
+
super().desc()
|
|
704
|
+
return self._parent_builder
|
|
705
|
+
|
|
706
|
+
class _EndedAtField(FieldFilter[datetime.datetime | None]):
|
|
707
|
+
"""Chainable ended_at filter with type-safe operations."""
|
|
708
|
+
|
|
709
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
710
|
+
super().__init__("ended_at", object.__getattribute__(builder, "_filter"))
|
|
711
|
+
self._parent_builder = builder
|
|
712
|
+
|
|
713
|
+
def eq(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
714
|
+
super().eq(value)
|
|
715
|
+
return self._parent_builder
|
|
716
|
+
|
|
717
|
+
def ne(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
718
|
+
super().ne(value)
|
|
719
|
+
return self._parent_builder
|
|
720
|
+
|
|
721
|
+
def gt(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
722
|
+
super().gt(value)
|
|
723
|
+
return self._parent_builder
|
|
724
|
+
|
|
725
|
+
def lt(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
726
|
+
super().lt(value)
|
|
727
|
+
return self._parent_builder
|
|
728
|
+
|
|
729
|
+
def gte(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
730
|
+
super().gte(value)
|
|
731
|
+
return self._parent_builder
|
|
732
|
+
|
|
733
|
+
def lte(self, value: datetime.datetime | None) -> SessionFilterBuilder:
|
|
734
|
+
super().lte(value)
|
|
735
|
+
return self._parent_builder
|
|
736
|
+
|
|
737
|
+
def in_(self, values: t.Sequence[datetime.datetime | None]) -> SessionFilterBuilder:
|
|
738
|
+
super().in_(values)
|
|
739
|
+
return self._parent_builder
|
|
740
|
+
|
|
741
|
+
def nin(self, values: t.Sequence[datetime.datetime | None]) -> SessionFilterBuilder:
|
|
742
|
+
super().nin(values)
|
|
743
|
+
return self._parent_builder
|
|
744
|
+
|
|
745
|
+
def between(
|
|
746
|
+
self, value1: datetime.datetime | None, value2: datetime.datetime | None
|
|
747
|
+
) -> SessionFilterBuilder:
|
|
748
|
+
super().between(value1, value2)
|
|
749
|
+
return self._parent_builder
|
|
750
|
+
|
|
751
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
752
|
+
super().is_null()
|
|
753
|
+
return self._parent_builder
|
|
754
|
+
|
|
755
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
756
|
+
super().is_not_null()
|
|
757
|
+
return self._parent_builder
|
|
758
|
+
|
|
759
|
+
def asc(self) -> SessionFilterBuilder:
|
|
760
|
+
super().asc()
|
|
761
|
+
return self._parent_builder
|
|
762
|
+
|
|
763
|
+
def desc(self) -> SessionFilterBuilder:
|
|
764
|
+
super().desc()
|
|
765
|
+
return self._parent_builder
|
|
766
|
+
|
|
767
|
+
class _NotesField(StringFieldFilter):
|
|
768
|
+
"""Chainable notes filter with type-safe operations."""
|
|
769
|
+
|
|
770
|
+
def __init__(self, builder: SessionFilterBuilder) -> None:
|
|
771
|
+
super().__init__("notes", object.__getattribute__(builder, "_filter"))
|
|
772
|
+
self._parent_builder = builder
|
|
773
|
+
|
|
774
|
+
def eq(self, value: str | None) -> SessionFilterBuilder:
|
|
775
|
+
super().eq(value)
|
|
776
|
+
return self._parent_builder
|
|
777
|
+
|
|
778
|
+
def ne(self, value: str | None) -> SessionFilterBuilder:
|
|
779
|
+
super().ne(value)
|
|
780
|
+
return self._parent_builder
|
|
781
|
+
|
|
782
|
+
def gt(self, value: str | None) -> SessionFilterBuilder:
|
|
783
|
+
super().gt(value)
|
|
784
|
+
return self._parent_builder
|
|
785
|
+
|
|
786
|
+
def lt(self, value: str | None) -> SessionFilterBuilder:
|
|
787
|
+
super().lt(value)
|
|
788
|
+
return self._parent_builder
|
|
789
|
+
|
|
790
|
+
def gte(self, value: str | None) -> SessionFilterBuilder:
|
|
791
|
+
super().gte(value)
|
|
792
|
+
return self._parent_builder
|
|
793
|
+
|
|
794
|
+
def lte(self, value: str | None) -> SessionFilterBuilder:
|
|
795
|
+
super().lte(value)
|
|
796
|
+
return self._parent_builder
|
|
797
|
+
|
|
798
|
+
def in_(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
799
|
+
super().in_(values)
|
|
800
|
+
return self._parent_builder
|
|
801
|
+
|
|
802
|
+
def nin(self, values: t.Sequence[str | None]) -> SessionFilterBuilder:
|
|
803
|
+
super().nin(values)
|
|
804
|
+
return self._parent_builder
|
|
805
|
+
|
|
806
|
+
def between(self, value1: str | None, value2: str | None) -> SessionFilterBuilder:
|
|
807
|
+
super().between(value1, value2)
|
|
808
|
+
return self._parent_builder
|
|
809
|
+
|
|
810
|
+
def is_null(self) -> SessionFilterBuilder:
|
|
811
|
+
super().is_null()
|
|
812
|
+
return self._parent_builder
|
|
813
|
+
|
|
814
|
+
def is_not_null(self) -> SessionFilterBuilder:
|
|
815
|
+
super().is_not_null()
|
|
816
|
+
return self._parent_builder
|
|
817
|
+
|
|
818
|
+
def asc(self) -> SessionFilterBuilder:
|
|
819
|
+
super().asc()
|
|
820
|
+
return self._parent_builder
|
|
821
|
+
|
|
822
|
+
def desc(self) -> SessionFilterBuilder:
|
|
823
|
+
super().desc()
|
|
824
|
+
return self._parent_builder
|
|
825
|
+
|
|
826
|
+
def contains(self, value: str) -> SessionFilterBuilder:
|
|
827
|
+
super().contains(value)
|
|
828
|
+
return self._parent_builder
|
|
829
|
+
|
|
830
|
+
def startswith(self, value: str) -> SessionFilterBuilder:
|
|
831
|
+
super().startswith(value)
|
|
832
|
+
return self._parent_builder
|
|
833
|
+
|
|
834
|
+
def endswith(self, value: str) -> SessionFilterBuilder:
|
|
835
|
+
super().endswith(value)
|
|
836
|
+
return self._parent_builder
|
|
837
|
+
|
|
838
|
+
def and_(self, *filters: Filter) -> Filter:
|
|
839
|
+
"""Combine with other filters using AND logic.
|
|
840
|
+
|
|
841
|
+
Args:
|
|
842
|
+
*filters: Other filters to combine with AND.
|
|
843
|
+
|
|
844
|
+
Returns:
|
|
845
|
+
Combined filter with AND logic.
|
|
846
|
+
|
|
847
|
+
Example:
|
|
848
|
+
```python
|
|
849
|
+
# username = 'john' AND email = 'john@ex.com'
|
|
850
|
+
filter = (
|
|
851
|
+
session_filter()
|
|
852
|
+
.username.eq("john")
|
|
853
|
+
.and_(session_filter().email.eq("john@ex.com"))
|
|
854
|
+
)
|
|
855
|
+
```
|
|
856
|
+
"""
|
|
857
|
+
return object.__getattribute__(self, "_filter").and_(*filters)
|
|
858
|
+
|
|
859
|
+
def or_(self, *filters: Filter) -> Filter:
|
|
860
|
+
"""Combine with other filters using OR logic.
|
|
861
|
+
|
|
862
|
+
Args:
|
|
863
|
+
*filters: Other filters to combine with OR.
|
|
864
|
+
|
|
865
|
+
Returns:
|
|
866
|
+
Combined filter with OR logic.
|
|
867
|
+
|
|
868
|
+
Example:
|
|
869
|
+
```python
|
|
870
|
+
# username = 'john' OR email = 'john@ex.com'
|
|
871
|
+
filter = (
|
|
872
|
+
session_filter()
|
|
873
|
+
.username.eq("john")
|
|
874
|
+
.or_(session_filter().email.eq("john@ex.com"))
|
|
875
|
+
)
|
|
876
|
+
```
|
|
877
|
+
"""
|
|
878
|
+
return object.__getattribute__(self, "_filter").or_(*filters)
|
|
879
|
+
|
|
880
|
+
def not_(self) -> Filter:
|
|
881
|
+
"""Negate the current filter.
|
|
882
|
+
|
|
883
|
+
Returns:
|
|
884
|
+
Negated filter.
|
|
885
|
+
|
|
886
|
+
Example:
|
|
887
|
+
```python
|
|
888
|
+
# NOT (username = 'john')
|
|
889
|
+
filter = session_filter().username.eq("john").not_()
|
|
890
|
+
```
|
|
891
|
+
"""
|
|
892
|
+
return object.__getattribute__(self, "_filter").not_()
|
|
893
|
+
|
|
894
|
+
# Field properties
|
|
895
|
+
|
|
896
|
+
@property
|
|
897
|
+
def id(self) -> _IdField:
|
|
898
|
+
"""Filter by id field."""
|
|
899
|
+
return self._IdField(self)
|
|
900
|
+
|
|
901
|
+
@property
|
|
902
|
+
def created_at(self) -> _CreatedAtField:
|
|
903
|
+
"""Filter by created_at field."""
|
|
904
|
+
return self._CreatedAtField(self)
|
|
905
|
+
|
|
906
|
+
@property
|
|
907
|
+
def updated_at(self) -> _UpdatedAtField:
|
|
908
|
+
"""Filter by updated_at field."""
|
|
909
|
+
return self._UpdatedAtField(self)
|
|
910
|
+
|
|
911
|
+
@property
|
|
912
|
+
def doctor_id(self) -> _DoctorIdField:
|
|
913
|
+
"""Filter by doctor_id field."""
|
|
914
|
+
return self._DoctorIdField(self)
|
|
915
|
+
|
|
916
|
+
@property
|
|
917
|
+
def patient_name(self) -> _PatientNameField:
|
|
918
|
+
"""Filter by patient_name field."""
|
|
919
|
+
return self._PatientNameField(self)
|
|
920
|
+
|
|
921
|
+
@property
|
|
922
|
+
def clinic_number(self) -> _ClinicNumberField:
|
|
923
|
+
"""Filter by clinic_number field."""
|
|
924
|
+
return self._ClinicNumberField(self)
|
|
925
|
+
|
|
926
|
+
@property
|
|
927
|
+
def medical_record_number(self) -> _MedicalRecordNumberField:
|
|
928
|
+
"""Filter by medical_record_number field."""
|
|
929
|
+
return self._MedicalRecordNumberField(self)
|
|
930
|
+
|
|
931
|
+
@property
|
|
932
|
+
def diagnosis(self) -> _DiagnosisField:
|
|
933
|
+
"""Filter by diagnosis field."""
|
|
934
|
+
return self._DiagnosisField(self)
|
|
935
|
+
|
|
936
|
+
@property
|
|
937
|
+
def status(self) -> _StatusField:
|
|
938
|
+
"""Filter by status field."""
|
|
939
|
+
return self._StatusField(self)
|
|
940
|
+
|
|
941
|
+
@property
|
|
942
|
+
def started_at(self) -> _StartedAtField:
|
|
943
|
+
"""Filter by started_at field."""
|
|
944
|
+
return self._StartedAtField(self)
|
|
945
|
+
|
|
946
|
+
@property
|
|
947
|
+
def ended_at(self) -> _EndedAtField:
|
|
948
|
+
"""Filter by ended_at field."""
|
|
949
|
+
return self._EndedAtField(self)
|
|
950
|
+
|
|
951
|
+
@property
|
|
952
|
+
def notes(self) -> _NotesField:
|
|
953
|
+
"""Filter by notes field."""
|
|
954
|
+
return self._NotesField(self)
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
def session_filter() -> SessionFilterBuilder:
|
|
958
|
+
"""Create a Session filter builder with full type safety.
|
|
959
|
+
|
|
960
|
+
Returns:
|
|
961
|
+
A SessionFilterBuilder instance with full IDE support and chainable fields.
|
|
962
|
+
|
|
963
|
+
Example:
|
|
964
|
+
```python
|
|
965
|
+
# AND conditions (chained)
|
|
966
|
+
filter = (
|
|
967
|
+
session_filter()
|
|
968
|
+
.field1.eq(value1)
|
|
969
|
+
.field2.contains(value2)
|
|
970
|
+
)
|
|
971
|
+
|
|
972
|
+
# OR conditions
|
|
973
|
+
filter = session_filter().field1.eq(
|
|
974
|
+
value1
|
|
975
|
+
) | session_filter().field2.eq(value2)
|
|
976
|
+
```
|
|
977
|
+
"""
|
|
978
|
+
return SessionFilterBuilder(Session)
|