from dataclasses import dataclass
from datetime import datetime
from typing import TYPE_CHECKING, List, Optional
from LOGS.Auxiliary import Tools
from LOGS.Auxiliary.MinimalModelGenerator import PersonMinimalFromDict
from LOGS.Interfaces.IEntityInterface import IEntityInterface
if TYPE_CHECKING:
    from LOGS.Entities.PersonMinimal import PersonMinimal
[docs]
@dataclass
class IModificationRecordRequest:
    pass 
[docs]
class IModifiedOnRequest:
    modifiedFrom: Optional[datetime] = None
    modifiedTo: Optional[datetime] = None 
[docs]
class IModifiedByRequest:
    modifiedByIds: Optional[List[int]] 
[docs]
class IModifiedOn(IEntityInterface):
    _modifiedOn: Optional[datetime] = None
    @property
    def modifiedOn(self) -> Optional[datetime]:
        return self._modifiedOn
    @modifiedOn.setter
    def modifiedOn(self, value):
        self._modifiedOn = Tools.checkAndConvert(
            value, datetime, "modifiedOn", allowNone=True
        ) 
[docs]
class IModifiedBy(IEntityInterface):
    _modifiedBy: Optional["PersonMinimal"] = None
    @property
    def modifiedBy(self) -> Optional["PersonMinimal"]:
        return self._modifiedBy
    @modifiedBy.setter
    def modifiedBy(self, value):
        self._modifiedBy = PersonMinimalFromDict(
            value, "modifiedBy", self._getEntityConnection()
        ) 
[docs]
class IModificationRecord(IModifiedOn, IModifiedBy):
    pass