|
| 1 | +from typing import List, Optional, Dict, Any |
| 2 | +from sqlalchemy.orm.attributes import flag_modified |
| 3 | +from ..models import IntegrationSharepointPropertySync |
| 4 | +from ..enums import SharepointPropertySyncState |
| 5 | +from ..business_objects import general |
| 6 | +from ..session import session |
| 7 | + |
| 8 | + |
| 9 | +def get_by_integration_id( |
| 10 | + integration_id: str, |
| 11 | +) -> IntegrationSharepointPropertySync: |
| 12 | + return ( |
| 13 | + session.query(IntegrationSharepointPropertySync) |
| 14 | + .filter(IntegrationSharepointPropertySync.integration_id == integration_id) |
| 15 | + .first() |
| 16 | + ) |
| 17 | + |
| 18 | + |
| 19 | +def create( |
| 20 | + integration_id: str, |
| 21 | + config: Optional[Dict[str, Any]] = None, |
| 22 | + logs: Optional[List[Dict[str, Any]]] = None, |
| 23 | + with_commit: bool = True, |
| 24 | +) -> IntegrationSharepointPropertySync: |
| 25 | + integration_sync = IntegrationSharepointPropertySync( |
| 26 | + integration_id=integration_id, |
| 27 | + config=config or {}, |
| 28 | + logs=logs or [], |
| 29 | + ) |
| 30 | + session.add(integration_sync) |
| 31 | + general.flush_or_commit(with_commit) |
| 32 | + return integration_sync |
| 33 | + |
| 34 | + |
| 35 | +def update( |
| 36 | + integration_id: str, |
| 37 | + config: Optional[Dict[str, Any]] = None, |
| 38 | + logs: Optional[List[Dict[str, Any]]] = None, |
| 39 | + with_commit: bool = True, |
| 40 | +) -> IntegrationSharepointPropertySync: |
| 41 | + integration_sync = get_by_integration_id(integration_id) |
| 42 | + if config is not None: |
| 43 | + integration_sync.config = config |
| 44 | + flag_modified(integration_sync, "config") |
| 45 | + if logs is not None: |
| 46 | + integration_sync.logs = logs |
| 47 | + flag_modified(integration_sync, "logs") |
| 48 | + general.flush_or_commit(with_commit) |
| 49 | + return integration_sync |
0 commit comments