jcloude/press/guards/role_guard/server_snapshot.py
2025-12-23 21:23:54 +08:00

23 lines
755 B
Python

import jingrow
from jingrow.query_builder.functions import Count
from jingrow.query_builder.terms import QueryBuilder
def check(base_query: QueryBuilder, document_name: str) -> bool:
PressRole = jingrow.qb.DocType("Jcloude Role")
PressRoleResource = jingrow.qb.DocType("Jcloude Role Resource")
ServerSnapshot = jingrow.qb.DocType("Server Snapshot")
return (
base_query.left_join(PressRoleResource)
.on(PressRoleResource.parent == PressRole.name)
.left_join(ServerSnapshot)
.on(ServerSnapshot.name == document_name)
.select(Count(PressRole.name).as_("count"))
.where(PressRoleResource.document_type == "Server")
.where(PressRoleResource.document_name == ServerSnapshot.app_server)
.run(as_dict=True)
.pop()
.get("count")
> 0
)