Recursive types #181

This commit is contained in:
2025-09-28 21:53:15 +02:00
parent 39d06dfe48
commit 39351a5eb9
41 changed files with 281 additions and 134 deletions

View File

@@ -13,8 +13,8 @@ class DbJoinModelABC[T](DbModelABC[T]):
foreign_id: Id,
deleted: bool = False,
editor_id: SerialId | None = None,
created: datetime | None= None,
updated: datetime | None= None,
created: datetime | None = None,
updated: datetime | None = None,
):
DbModelABC.__init__(self, id, deleted, editor_id, created, updated)

View File

@@ -2,7 +2,10 @@ from abc import ABC
from datetime import datetime, timezone
from typing import Optional, Generic
from async_property import async_property
from cpl.core.typing import Id, SerialId, T
from cpl.dependency import get_provider
class DbModelABC(ABC, Generic[T]):
@@ -11,8 +14,8 @@ class DbModelABC(ABC, Generic[T]):
id: Id,
deleted: bool = False,
editor_id: SerialId | None = None,
created: datetime | None= None,
updated: datetime | None= None,
created: datetime | None = None,
updated: datetime | None = None,
):
self._id = id
self._deleted = deleted
@@ -41,14 +44,16 @@ class DbModelABC(ABC, Generic[T]):
def editor_id(self, value: SerialId):
self._editor_id = value
# @async_property
# async def editor(self):
# if self._editor_id is None:
# return None
#
# from data.schemas.administration.user_dao import userDao
#
# return await userDao.get_by_id(self._editor_id)
@async_property
async def editor(self):
if self._editor_id is None:
return None
from cpl.auth.schema import AuthUserDao
auth_user_dao = get_provider().get_service(AuthUserDao)
return await auth_user_dao.get_by_id(self._editor_id)
@property
def created(self) -> datetime:

View File

@@ -8,8 +8,8 @@ class ExecutedMigration(DbModelABC[Self]):
def __init__(
self,
migration_id: str,
created: datetime | None= None,
modified: datetime | None= None,
created: datetime | None = None,
modified: datetime | None = None,
):
DbModelABC.__init__(self, migration_id, False, created, modified)