refactor: use wildcard to avoid duplicating some queries
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
parent
62b4700395
commit
8657690ef5
5 changed files with 11 additions and 34 deletions
|
|
@ -16,18 +16,18 @@ def execute():
|
||||||
and c.communication_date is not null
|
and c.communication_date is not null
|
||||||
limit %s
|
limit %s
|
||||||
""",
|
""",
|
||||||
"postgres": """
|
"*": """
|
||||||
UPDATE "tabCommunication Link"
|
UPDATE `tabCommunication Link`
|
||||||
SET communication_date = sub.communication_date
|
SET communication_date = sub.communication_date
|
||||||
FROM (
|
FROM (
|
||||||
SELECT cl.name, c.communication_date
|
SELECT cl.name, c.communication_date
|
||||||
FROM "tabCommunication Link" cl
|
FROM `tabCommunication Link` cl
|
||||||
JOIN "tabCommunication" c ON cl.parent = c.name
|
JOIN `tabCommunication` c ON cl.parent = c.name
|
||||||
WHERE cl.communication_date IS NULL
|
WHERE cl.communication_date IS NULL
|
||||||
AND c.communication_date IS NOT NULL
|
AND c.communication_date IS NOT NULL
|
||||||
LIMIT %s
|
LIMIT %s
|
||||||
) AS sub
|
) AS sub
|
||||||
WHERE "tabCommunication Link".name = sub.name
|
WHERE `tabCommunication Link`.name = sub.name
|
||||||
""",
|
""",
|
||||||
},
|
},
|
||||||
(batch_size,),
|
(batch_size,),
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ class SystemHealthReport(Document):
|
||||||
# Exclude "maybe" curently executing job
|
# Exclude "maybe" curently executing job
|
||||||
upper_threshold = add_to_date(None, minutes=-30, as_datetime=True)
|
upper_threshold = add_to_date(None, minutes=-30, as_datetime=True)
|
||||||
|
|
||||||
mariadb_query = """
|
query = """
|
||||||
SELECT scheduled_job_type,
|
SELECT scheduled_job_type,
|
||||||
AVG(CASE WHEN status != 'Complete' THEN 1 ELSE 0 END) * 100 AS failure_rate
|
AVG(CASE WHEN status != 'Complete' THEN 1 ELSE 0 END) * 100 AS failure_rate
|
||||||
FROM `tabScheduled Job Log`
|
FROM `tabScheduled Job Log`
|
||||||
|
|
@ -231,25 +231,10 @@ class SystemHealthReport(Document):
|
||||||
LIMIT 5
|
LIMIT 5
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sqlite_query = """
|
|
||||||
SELECT scheduled_job_type,
|
|
||||||
AVG(CASE WHEN status != 'Complete' THEN 1 ELSE 0 END) * 100 AS failure_rate
|
|
||||||
FROM `tabScheduled Job Log`
|
|
||||||
WHERE
|
|
||||||
creation > %(lower_threshold)s
|
|
||||||
AND modified > %(lower_threshold)s
|
|
||||||
AND creation < %(upper_threshold)s
|
|
||||||
GROUP BY scheduled_job_type
|
|
||||||
HAVING failure_rate > 0
|
|
||||||
ORDER BY failure_rate DESC
|
|
||||||
LIMIT 5
|
|
||||||
"""
|
|
||||||
|
|
||||||
failing_jobs = frappe.db.multisql(
|
failing_jobs = frappe.db.multisql(
|
||||||
{
|
{
|
||||||
"mariadb": mariadb_query,
|
|
||||||
"postgres": postgres_query,
|
"postgres": postgres_query,
|
||||||
"sqlite": sqlite_query,
|
"*": query,
|
||||||
},
|
},
|
||||||
{"lower_threshold": lower_threshold, "upper_threshold": upper_threshold},
|
{"lower_threshold": lower_threshold, "upper_threshold": upper_threshold},
|
||||||
as_dict=True,
|
as_dict=True,
|
||||||
|
|
|
||||||
|
|
@ -334,8 +334,7 @@ def get_communication_data(
|
||||||
return frappe.db.multisql(
|
return frappe.db.multisql(
|
||||||
{
|
{
|
||||||
"sqlite": sqlite_query,
|
"sqlite": sqlite_query,
|
||||||
"postgres": query,
|
"*": query,
|
||||||
"mariadb": query,
|
|
||||||
},
|
},
|
||||||
dict(
|
dict(
|
||||||
doctype=doctype,
|
doctype=doctype,
|
||||||
|
|
|
||||||
|
|
@ -54,10 +54,7 @@ def sync_user_settings():
|
||||||
"mariadb": """INSERT INTO `__UserSettings`(`user`, `doctype`, `data`)
|
"mariadb": """INSERT INTO `__UserSettings`(`user`, `doctype`, `data`)
|
||||||
VALUES (%s, %s, %s)
|
VALUES (%s, %s, %s)
|
||||||
ON DUPLICATE key UPDATE `data`=%s""",
|
ON DUPLICATE key UPDATE `data`=%s""",
|
||||||
"postgres": """INSERT INTO `__UserSettings` (`user`, `doctype`, `data`)
|
"*": """INSERT INTO `__UserSettings` (`user`, `doctype`, `data`)
|
||||||
VALUES (%s, %s, %s)
|
|
||||||
ON CONFLICT ("user", "doctype") DO UPDATE SET `data`=%s""",
|
|
||||||
"sqlite": """INSERT INTO `__UserSettings` (`user`, `doctype`, `data`)
|
|
||||||
VALUES (%s, %s, %s)
|
VALUES (%s, %s, %s)
|
||||||
ON CONFLICT (`user`, `doctype`) DO UPDATE SET `data`=%s""",
|
ON CONFLICT (`user`, `doctype`) DO UPDATE SET `data`=%s""",
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -41,12 +41,8 @@ def get_random(doctype: str, filters: dict | None = None, doc: bool = False):
|
||||||
|
|
||||||
out = frappe.db.multisql(
|
out = frappe.db.multisql(
|
||||||
{
|
{
|
||||||
"mariadb": f"""select name from `tab{doctype}` {condition}
|
"mariadb": f"select name from `tab{doctype}` {condition} order by RAND() limit 1 offset 0",
|
||||||
order by RAND() limit 1 offset 0""",
|
"*": f"select name from `tab{doctype}` {condition} order by RANDOM() limit 1 offset 0",
|
||||||
"postgres": f"""select name from `tab{doctype}` {condition}
|
|
||||||
order by RANDOM() limit 1 offset 0""",
|
|
||||||
"sqlite": f"""select name from `tab{doctype}` {condition}
|
|
||||||
order by RANDOM() limit 1 offset 0""",
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue