feat: schema mixins moved to project level
Resolves circular dependency issues.
This commit is contained in:
parent
e9fe405e06
commit
4ff9edf6d1
6 changed files with 38 additions and 43 deletions
|
|
@ -3,7 +3,6 @@ Pydantic models for the IAM module
|
|||
|
||||
Models follow the nomenclature of:
|
||||
- Sub-models: "<Resource><Opt:>Schema"
|
||||
- Mixins: "<Attribute>Mixin"
|
||||
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "IAMGetGroupPermissionsResponse"
|
||||
"""
|
||||
|
||||
|
|
@ -11,10 +10,14 @@ from typing import Optional, Annotated
|
|||
|
||||
from pydantic import EmailStr, ConfigDict, Field
|
||||
|
||||
from src.service.schemas import ServiceIDMixin
|
||||
from src.organisation.schemas import OrgIDMixin
|
||||
from src.schemas import CustomBaseModel
|
||||
from src.user.schemas import UserIDMixin
|
||||
from src.schemas import (
|
||||
CustomBaseModel,
|
||||
ServiceIDMixin,
|
||||
OrgIDMixin,
|
||||
UserIDMixin,
|
||||
PermIDMixin,
|
||||
GroupIDMixin,
|
||||
)
|
||||
|
||||
|
||||
class UserSchema(CustomBaseModel):
|
||||
|
|
@ -39,14 +42,6 @@ class GroupSchema(CustomBaseModel):
|
|||
name: str
|
||||
|
||||
|
||||
class GroupIDMixin(CustomBaseModel):
|
||||
group_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class PermIDMixin(CustomBaseModel):
|
||||
permission_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class IAMGetGroupPermissionsResponse(CustomBaseModel):
|
||||
permissions: list[PermissionSchema]
|
||||
|
||||
|
|
|
|||
|
|
@ -3,25 +3,19 @@ Pydantic models for organisation module
|
|||
|
||||
Models follow the nomenclature of:
|
||||
- Sub-models: "<Resource><Opt:>Schema"
|
||||
- Mixins: "<Attribute>Mixin"
|
||||
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "OrgPostOrgRequest"
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import EmailStr, ConfigDict, Field
|
||||
from pydantic import EmailStr, ConfigDict
|
||||
|
||||
from src.schemas import CustomBaseModel
|
||||
from src.schemas import CustomBaseModel, OrgIDMixin, UserIDMixin
|
||||
from src.contact.schemas import ContactModel
|
||||
from src.user.schemas import UserIDMixin
|
||||
|
||||
from src.organisation.constants import Status, ContactType
|
||||
|
||||
|
||||
class OrgIDMixin(CustomBaseModel):
|
||||
organisation_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class Questionnaire(CustomBaseModel):
|
||||
question_one: Optional[str] = None
|
||||
question_two: Optional[str] = None
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ Exports:
|
|||
- ResourceName
|
||||
"""
|
||||
|
||||
from pydantic import BaseModel
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Optional
|
||||
|
||||
|
||||
|
|
@ -19,3 +19,24 @@ class ResourceName(CustomBaseModel):
|
|||
organisation: str
|
||||
resource: str
|
||||
instance: Optional[str] = None
|
||||
|
||||
|
||||
### Mixins ###
|
||||
class OrgIDMixin(CustomBaseModel):
|
||||
organisation_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class GroupIDMixin(CustomBaseModel):
|
||||
group_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class PermIDMixin(CustomBaseModel):
|
||||
permission_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class ServiceIDMixin(CustomBaseModel):
|
||||
service_id: int = Field(gt=0)
|
||||
|
||||
|
||||
class UserIDMixin(CustomBaseModel):
|
||||
user_id: int = Field(gt=0)
|
||||
|
|
|
|||
|
|
@ -3,17 +3,12 @@ Pydantic models for service module
|
|||
|
||||
Models follow the nomenclature of:
|
||||
- Sub-models: "<Resource><Opt:>Schema"
|
||||
- Mixins: "<Attribute>Mixin"
|
||||
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "ServiceGetServiceResponse"
|
||||
"""
|
||||
|
||||
from pydantic import ConfigDict, Field
|
||||
from pydantic import ConfigDict
|
||||
|
||||
from src.schemas import CustomBaseModel
|
||||
|
||||
|
||||
class ServiceIDMixin(CustomBaseModel):
|
||||
service_id: int = Field(gt=0)
|
||||
from src.schemas import CustomBaseModel, ServiceIDMixin
|
||||
|
||||
|
||||
class ServiceSchema(CustomBaseModel):
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from src.user.models import User
|
|||
|
||||
from src.auth.service import claims_dependency
|
||||
from src.database import db_dependency
|
||||
from src.user.schemas import UserIDMixin
|
||||
from src.schemas import UserIDMixin
|
||||
|
||||
|
||||
async def get_user_model_claims(claims: claims_dependency, db: db_dependency):
|
||||
|
|
|
|||
|
|
@ -3,13 +3,9 @@ Pydantic models for the user module
|
|||
"""
|
||||
|
||||
from typing import Optional
|
||||
from pydantic import Field, EmailStr
|
||||
from pydantic import EmailStr
|
||||
|
||||
from src.schemas import CustomBaseModel
|
||||
|
||||
|
||||
class UserIDMixin(CustomBaseModel):
|
||||
user_id: int = Field(gt=0)
|
||||
from src.schemas import CustomBaseModel, OrgIDMixin
|
||||
|
||||
|
||||
class OIDCClaims(CustomBaseModel):
|
||||
|
|
@ -52,13 +48,7 @@ class UserResponse(CustomBaseModel):
|
|||
groups: Optional[dict[str, list[dict[str, str | int]]]] = None
|
||||
|
||||
|
||||
class OrgResponse(CustomBaseModel):
|
||||
org_id: int
|
||||
name: str
|
||||
|
||||
|
||||
class UserPostInvitationRequest(CustomBaseModel):
|
||||
organisation_id: int
|
||||
class UserPostInvitationRequest(OrgIDMixin):
|
||||
user_email: EmailStr
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue