Sync latest-evidence search and distinct source counts
This commit is contained in:
parent
27330207c5
commit
849dba6047
16
src/db.ts
16
src/db.ts
@ -813,7 +813,9 @@ export async function listSources() {
|
|||||||
export async function sourceStatus() {
|
export async function sourceStatus() {
|
||||||
const result = await pool.query(`
|
const result = await pool.query(`
|
||||||
SELECT s.*,
|
SELECT s.*,
|
||||||
(SELECT COUNT(*)::int FROM signals sig WHERE sig.source_id=s.id) AS signal_count,
|
(SELECT COUNT(DISTINCT sig.external_id)::int
|
||||||
|
FROM signals sig
|
||||||
|
WHERE sig.source_id=s.id) AS signal_count,
|
||||||
(SELECT COUNT(*)::int
|
(SELECT COUNT(*)::int
|
||||||
FROM opportunities o
|
FROM opportunities o
|
||||||
JOIN signals sig ON sig.id=o.signal_id
|
JOIN signals sig ON sig.id=o.signal_id
|
||||||
@ -924,11 +926,17 @@ export async function getEvidence(id: string) {
|
|||||||
|
|
||||||
export async function searchEvidence(query: string, limit = 20) {
|
export async function searchEvidence(query: string, limit = 20) {
|
||||||
const result = await pool.query(
|
const result = await pool.query(
|
||||||
`SELECT e.*, s.source_id,s.title,s.summary,s.url,s.published_at,
|
`WITH latest_signal AS (
|
||||||
|
SELECT DISTINCT ON (source_id,external_id) id
|
||||||
|
FROM signals
|
||||||
|
ORDER BY source_id,external_id,detected_at DESC
|
||||||
|
)
|
||||||
|
SELECT e.*, s.source_id,s.title,s.summary,s.url,s.published_at,
|
||||||
src.publisher,src.source_class,src.independence_group,src.authority_tier,
|
src.publisher,src.source_class,src.independence_group,src.authority_tier,
|
||||||
ss.retrieved_at AS snapshot_retrieved_at
|
ss.retrieved_at AS snapshot_retrieved_at
|
||||||
FROM evidence e
|
FROM latest_signal ls
|
||||||
JOIN signals s ON s.id=e.signal_id
|
JOIN signals s ON s.id=ls.id
|
||||||
|
JOIN evidence e ON e.signal_id=s.id
|
||||||
LEFT JOIN sources src ON src.id=s.source_id
|
LEFT JOIN sources src ON src.id=s.source_id
|
||||||
LEFT JOIN source_snapshots ss ON ss.id=e.snapshot_id
|
LEFT JOIN source_snapshots ss ON ss.id=e.snapshot_id
|
||||||
WHERE e.excerpt ILIKE $1 OR s.title ILIKE $1 OR s.summary ILIKE $1
|
WHERE e.excerpt ILIKE $1 OR s.title ILIKE $1 OR s.summary ILIKE $1
|
||||||
|
|||||||
@ -143,7 +143,7 @@ app.get("/ready", async (_req, res) => {
|
|||||||
try {
|
try {
|
||||||
const result = await pool.query(
|
const result = await pool.query(
|
||||||
`SELECT s.id, s.name, s.last_synced_at, s.last_error,
|
`SELECT s.id, s.name, s.last_synced_at, s.last_error,
|
||||||
COUNT(sig.id)::int AS signal_count
|
COUNT(DISTINCT sig.external_id)::int AS signal_count
|
||||||
FROM sources s
|
FROM sources s
|
||||||
LEFT JOIN signals sig ON sig.source_id=s.id
|
LEFT JOIN signals sig ON sig.source_id=s.id
|
||||||
GROUP BY s.id,s.name,s.last_synced_at,s.last_error,s.baseline_complete
|
GROUP BY s.id,s.name,s.last_synced_at,s.last_error,s.baseline_complete
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user