mirror of
https://github.com/skoelle/icloud-contacts-sync.git
synced 2026-09-17 23:40:24 +00:00
feat: iCloud-Kontaktgruppen synchronisieren und API-Endpunkte hinzufügen
Erkennt iCloud-Gruppen (vCards mit X-ADDRESSBOOKSERVER-KIND:group) beim
CardDAV-Sync und speichert sie separat in den neuen Tabellen groups und
group_members statt als Kontakte in die contacts-Tabelle.
Änderungen:
- sql/schema.sql: Neue Tabellen groups + group_members (FK CASCADE)
- src/vcard_parser.py: is_group_vcard() + parse_group() Funktionen
- src/db.py: DB-Funktionen für Gruppen (upsert, delete, replace, get)
- src/sync.py: _classify_vcards() trennt Gruppen von Kontakten
- src/api/schemas.py: Pydantic-Modelle für Gruppen-Responses
- src/api/main.py: 3 neue Endpunkte (/api/groups, /{id}, /{id}/members)
- src/api/templates/contact.html: Gruppen-Section im Kontakt-Detail
- README.md + SPEC.md: Dokumentation aktualisiert
This commit is contained in:
@@ -23,6 +23,7 @@ class ContactOut(BaseModel):
|
||||
urls: list
|
||||
social_profiles: list
|
||||
categories: list
|
||||
groups: list[str] = []
|
||||
updated_at: str
|
||||
|
||||
class Config:
|
||||
@@ -44,3 +45,30 @@ class SyncRunOut(BaseModel):
|
||||
contacts_upserted: int | None
|
||||
contacts_deleted: int | None
|
||||
error_message: str | None
|
||||
|
||||
|
||||
class GroupMemberOut(BaseModel):
|
||||
member_uid: str
|
||||
full_name: str | None
|
||||
id: int | None = None
|
||||
|
||||
|
||||
class GroupOut(BaseModel):
|
||||
id: int
|
||||
account: str
|
||||
uid: str
|
||||
name: str | None
|
||||
member_count: int
|
||||
updated_at: str
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class GroupDetailOut(GroupOut):
|
||||
members: list[GroupMemberOut]
|
||||
|
||||
|
||||
class GroupListResponse(BaseModel):
|
||||
total: int
|
||||
items: list[GroupOut]
|
||||
|
||||
Reference in New Issue
Block a user