Skip to content

Commit e9ba0bf

Browse files
Adds filter option (#176)
* Adds filter option * sharepoint permissions * move function --------- Co-authored-by: LennartSchmidtKern <[email protected]>
1 parent 1d2cacb commit e9ba0bf

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

cognition_objects/integration.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Optional, Dict, Union
1+
from typing import List, Optional, Dict, Union, Any
22
import datetime
33
from sqlalchemy import func
44
from sqlalchemy.orm.attributes import flag_modified
@@ -10,6 +10,7 @@
1010
CognitionMarkdownFileState,
1111
CognitionIntegrationType,
1212
)
13+
from ..util import prevent_sql_injection
1314

1415
FINISHED_STATES = [
1516
CognitionMarkdownFileState.FINISHED.value,
@@ -54,6 +55,7 @@ def get_all_in_org(
5455
org_id: str,
5556
integration_type: Optional[str] = None,
5657
only_synced: bool = False,
58+
exclude_failed: bool = False,
5759
) -> List[CognitionIntegration]:
5860
query = session.query(CognitionIntegration).filter(
5961
CognitionIntegration.organization_id == org_id
@@ -62,6 +64,10 @@ def get_all_in_org(
6264
query = query.filter(CognitionIntegration.type == integration_type)
6365
if only_synced:
6466
query = query.filter(CognitionIntegration.is_synced == True)
67+
if exclude_failed:
68+
query = query.filter(
69+
CognitionIntegration.state != CognitionMarkdownFileState.FAILED.value
70+
)
6571
return query.order_by(CognitionIntegration.created_at.desc()).all()
6672

6773

@@ -253,3 +259,22 @@ def delete_many(
253259
.delete(synchronize_session=False)
254260
)
255261
general.flush_or_commit(with_commit)
262+
263+
264+
def get_sharepoint_permissions_by_integration_id(
265+
integration_id: str,
266+
) -> Dict[str, Any]:
267+
integration_id = prevent_sql_injection(
268+
integration_id, isinstance(integration_id, str)
269+
)
270+
query = f"""SELECT permission_id, object_id
271+
FROM (
272+
SELECT json_array_elements_text(permissions) permission_id, MAX(id::TEXT)::UUID id
273+
FROM integration.sharepoint
274+
WHERE integration_id = '{integration_id}'
275+
GROUP BY 1
276+
)x
277+
INNER JOIN integration.sharepoint s
278+
ON x.id = s.id
279+
"""
280+
return session.execute(query).all()

0 commit comments

Comments
 (0)