From 1a0f55df8a2df7209cf9df71fb9c9043b3f0483a Mon Sep 17 00:00:00 2001 From: Troy Grunt Date: Fri, 22 Nov 2024 12:40:16 +0100 Subject: [PATCH] pydantic stuff --- requirements.txt | 2 ++ sccpy/core.py | 63 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index f229360..d43b4bd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ requests +pydantic + diff --git a/sccpy/core.py b/sccpy/core.py index f844507..c128621 100644 --- a/sccpy/core.py +++ b/sccpy/core.py @@ -1,4 +1,24 @@ -# core.py +from pydantic import BaseModel, Field +from typing import List, Optional +from datetime import date + +class User(BaseModel): + handle: str + name: str + enlisted: date # Datum + citizenrecord: Optional[int] # Integer oder None + languages: List[str] = Field(default_factory=list) # Liste von Strings + +class OrgMember(User): + rang: str + star: int + affiliate: bool + +class Org(BaseModel): + sid: str + name: str + membercount: int + fokus: List[str] = Field(default_factory=list) def getOrg(org_id): """ @@ -6,7 +26,12 @@ def getOrg(org_id): :param org_id: The ID of the organization. :return: A dictionary with organization details. """ - return {"id": org_id, "name": f"Org-{org_id}"} + return Org( + sid=f"org_{org_id}", + name=f"Organization {org_id}", + membercount=42, # Beispielwert + fokus=["Innovation", "Technology"] # Beispiel für Schwerpunkte + ) def getOrgMembers(org_id): """ @@ -14,7 +39,30 @@ def getOrgMembers(org_id): :param org_id: The ID of the organization. :return: A list of dictionaries representing members. """ - return [{"id": i, "name": f"Member-{i}"} for i in range(1, 6)] + return [ + OrgMember( + handle=f"user_{org_id}_1", + name="John Doe", + mainorg=f"org_{org_id}", + enlisted=date(2020, 5, 1), + citizenrecord=101, + languages=["English", "Spanish"], + rang="Senior", + star=5, + affiliate=True + ), + OrgMember( + handle=f"user_{org_id}_2", + name="Jane Smith", + mainorg=f"org_{org_id}", + enlisted=date(2021, 7, 15), + citizenrecord=None, + languages=["German"], + rang="Junior", + star=2, + affiliate=False + ), + ] def getUser(user_id): """ @@ -22,4 +70,11 @@ def getUser(user_id): :param user_id: The ID of the user. :return: A dictionary with user details. """ - return {"id": user_id, "name": f"User-{user_id}"} + return User( + handle=f"user_{user_id}", + name=f"User {user_id}", + mainorg="ExampleCorp", + enlisted=date(2023, 1, 15), # Beispiel für ein Datum + citizenrecord=user_id if user_id % 2 == 0 else None, # Integer oder None + languages=["English", "German"] + )