maleo-identity 0.1.9__py3-none-any.whl → 0.1.10__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.

Potentially problematic release.


This version of maleo-identity might be problematic. Click here for more details.

@@ -1,5 +1,5 @@
1
1
  from pydantic import BaseModel, Field
2
- from typing import Annotated, Generic, Literal, Tuple, TypeVar, overload
2
+ from typing import Annotated, Generic, Literal, TypeVar, overload
3
3
  from uuid import UUID
4
4
  from maleo.enums.organization import (
5
5
  OrganizationRelation,
@@ -13,7 +13,7 @@ from maleo.enums.status import (
13
13
  )
14
14
  from maleo.schemas.mixins.filter import convert as convert_filter
15
15
  from maleo.schemas.mixins.identity import (
16
- IdentifierTypeValue,
16
+ IdentifierMixin,
17
17
  Ids,
18
18
  UUIDs,
19
19
  IntSourceId,
@@ -22,6 +22,7 @@ from maleo.schemas.mixins.identity import (
22
22
  IntTargetIds,
23
23
  )
24
24
  from maleo.schemas.mixins.sort import convert as convert_sort
25
+ from maleo.schemas.operation.enums import ResourceOperationStatusUpdateType
25
26
  from maleo.schemas.parameter import (
26
27
  ReadSingleParameter as BaseReadSingleParameter,
27
28
  ReadPaginatedMultipleParameter,
@@ -33,8 +34,12 @@ from maleo.types.dict import StrToAnyDict
33
34
  from maleo.types.integer import OptListOfInts
34
35
  from maleo.types.uuid import OptListOfUUIDs
35
36
  from ..enums.organization_relation import IdentifierType
36
- from ..mixins.organization_relation import IsBidirectional, Meta
37
- from ..types.organization_relation import IdentifierValueType
37
+ from ..mixins.organization_relation import (
38
+ IsBidirectional,
39
+ Meta,
40
+ OrganizationRelationIdentifier,
41
+ )
42
+ from ..types.organization_relation import CompositeIdentifier, IdentifierValueType
38
43
 
39
44
 
40
45
  class CreateParameter(
@@ -82,7 +87,7 @@ class ReadMultipleParameter(
82
87
  return params
83
88
 
84
89
 
85
- class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValueType]):
90
+ class ReadSingleParameter(BaseReadSingleParameter[OrganizationRelationIdentifier]):
86
91
  @overload
87
92
  @classmethod
88
93
  def new(
@@ -106,7 +111,7 @@ class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValu
106
111
  def new(
107
112
  cls,
108
113
  identifier_type: Literal[IdentifierType.COMPOSITE],
109
- identifier_value: Tuple[int, int, OrganizationRelation],
114
+ identifier_value: CompositeIdentifier,
110
115
  statuses: ListOfDataStatuses = list(FULL_DATA_STATUSES),
111
116
  use_cache: bool = True,
112
117
  ) -> "ReadSingleParameter": ...
@@ -128,8 +133,9 @@ class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValu
128
133
  use_cache: bool = True,
129
134
  ) -> "ReadSingleParameter":
130
135
  return cls(
131
- identifier_type=identifier_type,
132
- identifier_value=identifier_value,
136
+ identifier=OrganizationRelationIdentifier(
137
+ type=identifier_type, value=identifier_value
138
+ ),
133
139
  statuses=statuses,
134
140
  use_cache=use_cache,
135
141
  )
@@ -157,22 +163,135 @@ class UpdateDataMixin(BaseModel, Generic[UpdateDataT]):
157
163
 
158
164
  class UpdateParameter(
159
165
  UpdateDataMixin[UpdateDataT],
160
- IdentifierTypeValue[
161
- IdentifierType,
162
- IdentifierValueType,
163
- ],
166
+ IdentifierMixin[OrganizationRelationIdentifier],
164
167
  Generic[UpdateDataT],
165
168
  ):
166
- pass
169
+ @overload
170
+ @classmethod
171
+ def new(
172
+ cls,
173
+ identifier_type: Literal[IdentifierType.ID],
174
+ identifier_value: int,
175
+ data: UpdateDataT,
176
+ ) -> "UpdateParameter": ...
177
+ @overload
178
+ @classmethod
179
+ def new(
180
+ cls,
181
+ identifier_type: Literal[IdentifierType.UUID],
182
+ identifier_value: UUID,
183
+ data: UpdateDataT,
184
+ ) -> "UpdateParameter": ...
185
+ @overload
186
+ @classmethod
187
+ def new(
188
+ cls,
189
+ identifier_type: Literal[IdentifierType.COMPOSITE],
190
+ identifier_value: CompositeIdentifier,
191
+ data: UpdateDataT,
192
+ ) -> "UpdateParameter": ...
193
+ @overload
194
+ @classmethod
195
+ def new(
196
+ cls,
197
+ identifier_type: IdentifierType,
198
+ identifier_value: IdentifierValueType,
199
+ data: UpdateDataT,
200
+ ) -> "UpdateParameter": ...
201
+ @classmethod
202
+ def new(
203
+ cls,
204
+ identifier_type: IdentifierType,
205
+ identifier_value: IdentifierValueType,
206
+ data: UpdateDataT,
207
+ ) -> "UpdateParameter":
208
+ return cls(
209
+ identifier=OrganizationRelationIdentifier(
210
+ type=identifier_type, value=identifier_value
211
+ ),
212
+ data=data,
213
+ )
167
214
 
168
215
 
169
216
  class StatusUpdateParameter(
170
- BaseStatusUpdateParameter[IdentifierType, IdentifierValueType],
217
+ BaseStatusUpdateParameter[OrganizationRelationIdentifier],
171
218
  ):
172
- pass
219
+ @overload
220
+ @classmethod
221
+ def new(
222
+ cls,
223
+ identifier_type: Literal[IdentifierType.ID],
224
+ identifier_value: int,
225
+ type: ResourceOperationStatusUpdateType,
226
+ ) -> "StatusUpdateParameter": ...
227
+ @overload
228
+ @classmethod
229
+ def new(
230
+ cls,
231
+ identifier_type: Literal[IdentifierType.UUID],
232
+ identifier_value: UUID,
233
+ type: ResourceOperationStatusUpdateType,
234
+ ) -> "StatusUpdateParameter": ...
235
+ @overload
236
+ @classmethod
237
+ def new(
238
+ cls,
239
+ identifier_type: Literal[IdentifierType.COMPOSITE],
240
+ identifier_value: CompositeIdentifier,
241
+ type: ResourceOperationStatusUpdateType,
242
+ ) -> "StatusUpdateParameter": ...
243
+ @overload
244
+ @classmethod
245
+ def new(
246
+ cls,
247
+ identifier_type: IdentifierType,
248
+ identifier_value: IdentifierValueType,
249
+ type: ResourceOperationStatusUpdateType,
250
+ ) -> "StatusUpdateParameter": ...
251
+ @classmethod
252
+ def new(
253
+ cls,
254
+ identifier_type: IdentifierType,
255
+ identifier_value: IdentifierValueType,
256
+ type: ResourceOperationStatusUpdateType,
257
+ ) -> "StatusUpdateParameter":
258
+ return cls(
259
+ identifier=OrganizationRelationIdentifier(
260
+ type=identifier_type, value=identifier_value
261
+ ),
262
+ type=type,
263
+ )
173
264
 
174
265
 
175
- class DeleteSingleParameter(
176
- BaseDeleteSingleParameter[IdentifierType, IdentifierValueType]
177
- ):
178
- pass
266
+ class DeleteSingleParameter(BaseDeleteSingleParameter[OrganizationRelationIdentifier]):
267
+ @overload
268
+ @classmethod
269
+ def new(
270
+ cls, identifier_type: Literal[IdentifierType.ID], identifier_value: int
271
+ ) -> "DeleteSingleParameter": ...
272
+ @overload
273
+ @classmethod
274
+ def new(
275
+ cls, identifier_type: Literal[IdentifierType.UUID], identifier_value: UUID
276
+ ) -> "DeleteSingleParameter": ...
277
+ @overload
278
+ @classmethod
279
+ def new(
280
+ cls,
281
+ identifier_type: Literal[IdentifierType.COMPOSITE],
282
+ identifier_value: CompositeIdentifier,
283
+ ) -> "DeleteSingleParameter": ...
284
+ @overload
285
+ @classmethod
286
+ def new(
287
+ cls, identifier_type: IdentifierType, identifier_value: IdentifierValueType
288
+ ) -> "DeleteSingleParameter": ...
289
+ @classmethod
290
+ def new(
291
+ cls, identifier_type: IdentifierType, identifier_value: IdentifierValueType
292
+ ) -> "DeleteSingleParameter":
293
+ return cls(
294
+ identifier=OrganizationRelationIdentifier(
295
+ type=identifier_type, value=identifier_value
296
+ )
297
+ )
@@ -23,7 +23,7 @@ from maleo.enums.status import (
23
23
  )
24
24
  from maleo.schemas.mixins.filter import convert as convert_filter
25
25
  from maleo.schemas.mixins.identity import (
26
- IdentifierTypeValue,
26
+ IdentifierMixin,
27
27
  Ids,
28
28
  UUIDs,
29
29
  FullNames,
@@ -32,6 +32,7 @@ from maleo.schemas.mixins.identity import (
32
32
  IntOrganizationIds,
33
33
  )
34
34
  from maleo.schemas.mixins.sort import convert as convert_sort
35
+ from maleo.schemas.operation.enums import ResourceOperationStatusUpdateType
35
36
  from maleo.schemas.parameter import (
36
37
  ReadSingleParameter as BaseReadSingleParameter,
37
38
  ReadPaginatedMultipleParameter,
@@ -45,7 +46,7 @@ from maleo.types.string import OptStr, OptListOfStrs
45
46
  from maleo.types.uuid import OptListOfUUIDs
46
47
  from ..enums.patient import IdentifierType
47
48
  from ..mixins.common import IdCard, FullName, PlaceOfBirth
48
- from ..mixins.patient import PatientIdentifier
49
+ from ..mixins.patient import PatientIdentity, PatientIdentifier
49
50
  from ..types.patient import IdentifierValueType
50
51
 
51
52
 
@@ -56,7 +57,7 @@ class StandardCreateData(
56
57
  DateOfBirth[date],
57
58
  PlaceOfBirth[OptStr],
58
59
  FullName[str],
59
- PatientIdentifier,
60
+ PatientIdentity,
60
61
  ):
61
62
  pass
62
63
 
@@ -109,7 +110,7 @@ class ReadMultipleParameter(
109
110
  return params
110
111
 
111
112
 
112
- class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValueType]):
113
+ class ReadSingleParameter(BaseReadSingleParameter[PatientIdentifier]):
113
114
  @overload
114
115
  @classmethod
115
116
  def new(
@@ -146,8 +147,10 @@ class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValu
146
147
  use_cache: bool = True,
147
148
  ) -> "ReadSingleParameter":
148
149
  return cls(
149
- identifier_type=identifier_type,
150
- identifier_value=identifier_value,
150
+ identifier=PatientIdentifier(
151
+ type=identifier_type,
152
+ value=identifier_value,
153
+ ),
151
154
  statuses=statuses,
152
155
  use_cache=use_cache,
153
156
  )
@@ -165,7 +168,7 @@ class FullUpdateData(
165
168
  DateOfBirth[date],
166
169
  PlaceOfBirth[OptStr],
167
170
  FullName[str],
168
- PatientIdentifier,
171
+ PatientIdentity,
169
172
  IdCard[OptStr],
170
173
  ):
171
174
  pass
@@ -178,7 +181,7 @@ class PartialUpdateData(
178
181
  DateOfBirth[OptDate],
179
182
  PlaceOfBirth[OptStr],
180
183
  FullName[OptStr],
181
- PatientIdentifier,
184
+ PatientIdentity,
182
185
  IdCard[OptStr],
183
186
  ):
184
187
  pass
@@ -193,22 +196,129 @@ class UpdateDataMixin(BaseModel, Generic[UpdateDataT]):
193
196
 
194
197
  class UpdateParameter(
195
198
  UpdateDataMixin[UpdateDataT],
196
- IdentifierTypeValue[
197
- IdentifierType,
198
- IdentifierValueType,
199
- ],
199
+ IdentifierMixin[PatientIdentifier],
200
200
  Generic[UpdateDataT],
201
201
  ):
202
- pass
202
+ @overload
203
+ @classmethod
204
+ def new(
205
+ cls,
206
+ identifier_type: Literal[IdentifierType.ID],
207
+ identifier_value: int,
208
+ data: UpdateDataT,
209
+ ) -> "UpdateParameter": ...
210
+ @overload
211
+ @classmethod
212
+ def new(
213
+ cls,
214
+ identifier_type: Literal[IdentifierType.UUID],
215
+ identifier_value: UUID,
216
+ data: UpdateDataT,
217
+ ) -> "UpdateParameter": ...
218
+ @overload
219
+ @classmethod
220
+ def new(
221
+ cls,
222
+ identifier_type: Literal[IdentifierType.ID_CARD, IdentifierType.PASSPORT],
223
+ identifier_value: str,
224
+ data: UpdateDataT,
225
+ ) -> "UpdateParameter": ...
226
+ @overload
227
+ @classmethod
228
+ def new(
229
+ cls,
230
+ identifier_type: IdentifierType,
231
+ identifier_value: IdentifierValueType,
232
+ data: UpdateDataT,
233
+ ) -> "UpdateParameter": ...
234
+ @classmethod
235
+ def new(
236
+ cls,
237
+ identifier_type: IdentifierType,
238
+ identifier_value: IdentifierValueType,
239
+ data: UpdateDataT,
240
+ ) -> "UpdateParameter":
241
+ return cls(
242
+ identifier=PatientIdentifier(type=identifier_type, value=identifier_value),
243
+ data=data,
244
+ )
203
245
 
204
246
 
205
247
  class StatusUpdateParameter(
206
- BaseStatusUpdateParameter[IdentifierType, IdentifierValueType],
248
+ BaseStatusUpdateParameter[PatientIdentifier],
207
249
  ):
208
- pass
250
+ @overload
251
+ @classmethod
252
+ def new(
253
+ cls,
254
+ identifier_type: Literal[IdentifierType.ID],
255
+ identifier_value: int,
256
+ type: ResourceOperationStatusUpdateType,
257
+ ) -> "StatusUpdateParameter": ...
258
+ @overload
259
+ @classmethod
260
+ def new(
261
+ cls,
262
+ identifier_type: Literal[IdentifierType.UUID],
263
+ identifier_value: UUID,
264
+ type: ResourceOperationStatusUpdateType,
265
+ ) -> "StatusUpdateParameter": ...
266
+ @overload
267
+ @classmethod
268
+ def new(
269
+ cls,
270
+ identifier_type: Literal[IdentifierType.ID_CARD, IdentifierType.PASSPORT],
271
+ identifier_value: str,
272
+ type: ResourceOperationStatusUpdateType,
273
+ ) -> "StatusUpdateParameter": ...
274
+ @overload
275
+ @classmethod
276
+ def new(
277
+ cls,
278
+ identifier_type: IdentifierType,
279
+ identifier_value: IdentifierValueType,
280
+ type: ResourceOperationStatusUpdateType,
281
+ ) -> "StatusUpdateParameter": ...
282
+ @classmethod
283
+ def new(
284
+ cls,
285
+ identifier_type: IdentifierType,
286
+ identifier_value: IdentifierValueType,
287
+ type: ResourceOperationStatusUpdateType,
288
+ ) -> "StatusUpdateParameter":
289
+ return cls(
290
+ identifier=PatientIdentifier(type=identifier_type, value=identifier_value),
291
+ type=type,
292
+ )
209
293
 
210
294
 
211
- class DeleteSingleParameter(
212
- BaseDeleteSingleParameter[IdentifierType, IdentifierValueType]
213
- ):
214
- pass
295
+ class DeleteSingleParameter(BaseDeleteSingleParameter[PatientIdentifier]):
296
+ @overload
297
+ @classmethod
298
+ def new(
299
+ cls, identifier_type: Literal[IdentifierType.ID], identifier_value: int
300
+ ) -> "DeleteSingleParameter": ...
301
+ @overload
302
+ @classmethod
303
+ def new(
304
+ cls, identifier_type: Literal[IdentifierType.UUID], identifier_value: UUID
305
+ ) -> "DeleteSingleParameter": ...
306
+ @overload
307
+ @classmethod
308
+ def new(
309
+ cls,
310
+ identifier_type: Literal[IdentifierType.ID_CARD, IdentifierType.PASSPORT],
311
+ identifier_value: str,
312
+ ) -> "DeleteSingleParameter": ...
313
+ @overload
314
+ @classmethod
315
+ def new(
316
+ cls, identifier_type: IdentifierType, identifier_value: IdentifierValueType
317
+ ) -> "DeleteSingleParameter": ...
318
+ @classmethod
319
+ def new(
320
+ cls, identifier_type: IdentifierType, identifier_value: IdentifierValueType
321
+ ) -> "DeleteSingleParameter":
322
+ return cls(
323
+ identifier=PatientIdentifier(type=identifier_type, value=identifier_value)
324
+ )
@@ -14,12 +14,13 @@ from maleo.enums.user import (
14
14
  )
15
15
  from maleo.schemas.mixins.filter import convert as convert_filter
16
16
  from maleo.schemas.mixins.identity import (
17
- IdentifierTypeValue,
17
+ IdentifierMixin,
18
18
  Ids,
19
19
  UUIDs,
20
20
  IntOrganizationIds,
21
21
  )
22
22
  from maleo.schemas.mixins.sort import convert as convert_sort
23
+ from maleo.schemas.operation.enums import ResourceOperationStatusUpdateType
23
24
  from maleo.schemas.parameter import (
24
25
  ReadSingleParameter as BaseReadSingleParameter,
25
26
  ReadPaginatedMultipleParameter,
@@ -38,6 +39,7 @@ from ..mixins.user import (
38
39
  Emails,
39
40
  Phone,
40
41
  Phones,
42
+ UserIdentifier,
41
43
  )
42
44
  from ..types.user import IdentifierValueType
43
45
 
@@ -85,7 +87,7 @@ class ReadMultipleParameter(
85
87
  return params
86
88
 
87
89
 
88
- class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValueType]):
90
+ class ReadSingleParameter(BaseReadSingleParameter[UserIdentifier]):
89
91
  @overload
90
92
  @classmethod
91
93
  def new(
@@ -122,8 +124,10 @@ class ReadSingleParameter(BaseReadSingleParameter[IdentifierType, IdentifierValu
122
124
  use_cache: bool = True,
123
125
  ) -> "ReadSingleParameter":
124
126
  return cls(
125
- identifier_type=identifier_type,
126
- identifier_value=identifier_value,
127
+ identifier=UserIdentifier(
128
+ type=identifier_type,
129
+ value=identifier_value,
130
+ ),
127
131
  statuses=statuses,
128
132
  use_cache=use_cache,
129
133
  )
@@ -163,22 +167,129 @@ class UpdateDataMixin(BaseModel, Generic[UpdateDataT]):
163
167
 
164
168
  class UpdateParameter(
165
169
  UpdateDataMixin[UpdateDataT],
166
- IdentifierTypeValue[
167
- IdentifierType,
168
- IdentifierValueType,
169
- ],
170
+ IdentifierMixin[UserIdentifier],
170
171
  Generic[UpdateDataT],
171
172
  ):
172
- pass
173
+ @overload
174
+ @classmethod
175
+ def new(
176
+ cls,
177
+ identifier_type: Literal[IdentifierType.ID],
178
+ identifier_value: int,
179
+ data: UpdateDataT,
180
+ ) -> "UpdateParameter": ...
181
+ @overload
182
+ @classmethod
183
+ def new(
184
+ cls,
185
+ identifier_type: Literal[IdentifierType.UUID],
186
+ identifier_value: UUID,
187
+ data: UpdateDataT,
188
+ ) -> "UpdateParameter": ...
189
+ @overload
190
+ @classmethod
191
+ def new(
192
+ cls,
193
+ identifier_type: Literal[IdentifierType.USERNAME, IdentifierType.EMAIL],
194
+ identifier_value: str,
195
+ data: UpdateDataT,
196
+ ) -> "UpdateParameter": ...
197
+ @overload
198
+ @classmethod
199
+ def new(
200
+ cls,
201
+ identifier_type: IdentifierType,
202
+ identifier_value: IdentifierValueType,
203
+ data: UpdateDataT,
204
+ ) -> "UpdateParameter": ...
205
+ @classmethod
206
+ def new(
207
+ cls,
208
+ identifier_type: IdentifierType,
209
+ identifier_value: IdentifierValueType,
210
+ data: UpdateDataT,
211
+ ) -> "UpdateParameter":
212
+ return cls(
213
+ identifier=UserIdentifier(type=identifier_type, value=identifier_value),
214
+ data=data,
215
+ )
173
216
 
174
217
 
175
218
  class StatusUpdateParameter(
176
- BaseStatusUpdateParameter[IdentifierType, IdentifierValueType],
219
+ BaseStatusUpdateParameter[UserIdentifier],
177
220
  ):
178
- pass
221
+ @overload
222
+ @classmethod
223
+ def new(
224
+ cls,
225
+ identifier_type: Literal[IdentifierType.ID],
226
+ identifier_value: int,
227
+ type: ResourceOperationStatusUpdateType,
228
+ ) -> "StatusUpdateParameter": ...
229
+ @overload
230
+ @classmethod
231
+ def new(
232
+ cls,
233
+ identifier_type: Literal[IdentifierType.UUID],
234
+ identifier_value: UUID,
235
+ type: ResourceOperationStatusUpdateType,
236
+ ) -> "StatusUpdateParameter": ...
237
+ @overload
238
+ @classmethod
239
+ def new(
240
+ cls,
241
+ identifier_type: Literal[IdentifierType.USERNAME, IdentifierType.EMAIL],
242
+ identifier_value: str,
243
+ type: ResourceOperationStatusUpdateType,
244
+ ) -> "StatusUpdateParameter": ...
245
+ @overload
246
+ @classmethod
247
+ def new(
248
+ cls,
249
+ identifier_type: IdentifierType,
250
+ identifier_value: IdentifierValueType,
251
+ type: ResourceOperationStatusUpdateType,
252
+ ) -> "StatusUpdateParameter": ...
253
+ @classmethod
254
+ def new(
255
+ cls,
256
+ identifier_type: IdentifierType,
257
+ identifier_value: IdentifierValueType,
258
+ type: ResourceOperationStatusUpdateType,
259
+ ) -> "StatusUpdateParameter":
260
+ return cls(
261
+ identifier=UserIdentifier(type=identifier_type, value=identifier_value),
262
+ type=type,
263
+ )
179
264
 
180
265
 
181
- class DeleteSingleParameter(
182
- BaseDeleteSingleParameter[IdentifierType, IdentifierValueType]
183
- ):
184
- pass
266
+ class DeleteSingleParameter(BaseDeleteSingleParameter[UserIdentifier]):
267
+ @overload
268
+ @classmethod
269
+ def new(
270
+ cls, identifier_type: Literal[IdentifierType.ID], identifier_value: int
271
+ ) -> "DeleteSingleParameter": ...
272
+ @overload
273
+ @classmethod
274
+ def new(
275
+ cls, identifier_type: Literal[IdentifierType.UUID], identifier_value: UUID
276
+ ) -> "DeleteSingleParameter": ...
277
+ @overload
278
+ @classmethod
279
+ def new(
280
+ cls,
281
+ identifier_type: Literal[IdentifierType.USERNAME, IdentifierType.EMAIL],
282
+ identifier_value: str,
283
+ ) -> "DeleteSingleParameter": ...
284
+ @overload
285
+ @classmethod
286
+ def new(
287
+ cls, identifier_type: IdentifierType, identifier_value: IdentifierValueType
288
+ ) -> "DeleteSingleParameter": ...
289
+ @classmethod
290
+ def new(
291
+ cls, identifier_type: IdentifierType, identifier_value: IdentifierValueType
292
+ ) -> "DeleteSingleParameter":
293
+ return cls(
294
+ identifier=UserIdentifier(type=identifier_type, value=identifier_value)
295
+ )