mirror of
https://github.com/LowderPlay/cheburcheck.git
synced 2026-09-25 07:48:02 +03:00
* feat!: svelte rewrite * feat: remove mock * fix: formatting and optimisation * feat: db optimizations * feat: dockerfile and version * ci: change dockerfile syntax * fix: remove domain trie
61 lines
1.3 KiB
SQL
61 lines
1.3 KiB
SQL
ALTER TABLE
|
|
queries
|
|
ALTER COLUMN
|
|
id
|
|
SET
|
|
DEFAULT uuidv7();
|
|
|
|
CREATE INDEX IF NOT EXISTS reports_reporter_date_id_desc_idx ON reports (reporter, date DESC, id DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS report_row_domain_idx ON report_row (domain);
|
|
|
|
DROP MATERIALIZED VIEW IF EXISTS whitelist;
|
|
|
|
CREATE MATERIALIZED VIEW whitelist AS WITH report_domains AS (
|
|
SELECT
|
|
DISTINCT domain
|
|
FROM
|
|
report_row
|
|
)
|
|
SELECT
|
|
latest.domain,
|
|
d.rank,
|
|
MAX(
|
|
CASE
|
|
WHEN latest.evidence = 'ok' THEN latest.date
|
|
END
|
|
) AS last_ok
|
|
FROM
|
|
report_domains rd
|
|
CROSS JOIN LATERAL (
|
|
SELECT
|
|
rd.domain,
|
|
rr.evidence,
|
|
r.date
|
|
FROM
|
|
reports r
|
|
JOIN report_row rr ON rr.report_id = r.id
|
|
AND rr.domain = rd.domain
|
|
WHERE
|
|
r.reporter = 1
|
|
ORDER BY
|
|
r.date DESC,
|
|
r.id DESC
|
|
LIMIT
|
|
5
|
|
) latest
|
|
LEFT JOIN domains d ON d.domain = latest.domain
|
|
GROUP BY
|
|
latest.domain,
|
|
d.rank
|
|
HAVING
|
|
COUNT(*) FILTER (
|
|
WHERE
|
|
latest.evidence = 'ok'
|
|
) >= COUNT(*) / 2.0
|
|
ORDER BY
|
|
d.rank;
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS whitelist_domain_idx ON whitelist (domain);
|
|
|
|
CREATE INDEX IF NOT EXISTS whitelist_rank_idx ON whitelist (rank); |