patchcenter/app/services/query_helpers.py

33 lines
1.0 KiB
Python

"""Helpers SQL reutilisables pour eviter la duplication de JOINs."""
from sqlalchemy import text
SERVER_BASE_JOINS = """
LEFT JOIN domain_environments de ON s.domain_env_id = de.id
LEFT JOIN domains d ON de.domain_id = d.id
LEFT JOIN environments e ON de.environment_id = e.id
LEFT JOIN zones z ON s.zone_id = z.id
"""
SERVER_BASE_COLS = """
s.id, s.hostname, s.fqdn, s.os_family, s.os_version,
s.etat, s.tier, s.environnement, s.machine_type,
d.name as domaine, d.code as domain_code,
e.name as env_name, e.code as env_code,
z.name as zone
"""
def server_list_query(where="1=1", order="s.hostname", limit=None, offset=None):
"""Construit une requete SELECT serveurs avec JOINs standard."""
q = f"""
SELECT {SERVER_BASE_COLS}
FROM servers s
{SERVER_BASE_JOINS}
WHERE {where}
ORDER BY {order}
"""
if limit is not None:
q += f" LIMIT {int(limit)}"
if offset is not None:
q += f" OFFSET {int(offset)}"
return text(q)