pappitti commited on
Commit
cbd716e
·
1 Parent(s): 75959de

indexing db

Browse files
Files changed (2) hide show
  1. api/mismatches.ts +29 -15
  2. src/lib/ingest.ts +7 -1
api/mismatches.ts CHANGED
@@ -16,29 +16,43 @@ export default async function handler(req: IncomingMessage, res: ServerResponse)
16
 
17
  try {
18
  const sql = `
19
- WITH MatchingResponses AS (
20
- SELECT
21
- r.uuid as r_uuid, q.question, q.theme as question_theme, q.domain as question_domain,
22
- r.model as response_model, r.content as response_content
23
- FROM assessments a1
24
- JOIN assessments a2 ON a1.r_uuid = a2.r_uuid
25
- JOIN responses r ON a1.r_uuid = r.uuid
26
  JOIN questions q ON r.q_uuid = q.uuid
27
- WHERE
28
- a1.judge_model = ? AND a1.compliance = ? AND
29
- a2.judge_model = ? AND a2.compliance = ? AND
30
  (? IS NULL OR q.theme = ?)
 
 
 
 
 
31
  )
32
  SELECT
33
- mr.*, a.judge_model, a.compliance, a.judge_analysis
34
- FROM MatchingResponses mr
 
 
 
 
 
 
 
 
 
 
35
  JOIN assessments a ON mr.r_uuid = a.r_uuid
36
- WHERE a.judge_model IN (?, ?)
37
- ORDER BY mr.r_uuid;
 
38
  `;
39
  const params = [
40
- judge1, j1_compliance, judge2, j2_compliance,
41
  theme, theme,
 
 
42
  judge1, judge2
43
  ];
44
  const rows = await db.query<any>(sql, ...params);
 
16
 
17
  try {
18
  const sql = `
19
+ WITH MismatchedResponses AS (
20
+ SELECT a.r_uuid
21
+ FROM assessments a
22
+ JOIN responses r ON a.r_uuid = r.uuid
 
 
 
23
  JOIN questions q ON r.q_uuid = q.uuid
24
+ WHERE
25
+ a.judge_model IN (?, ?) AND
 
26
  (? IS NULL OR q.theme = ?)
27
+ GROUP BY a.r_uuid
28
+ HAVING
29
+ SUM(CASE WHEN a.judge_model = ? AND a.compliance = ? THEN 1 ELSE 0 END) > 0
30
+ AND
31
+ SUM(CASE WHEN a.judge_model = ? AND a.compliance = ? THEN 1 ELSE 0 END) > 0
32
  )
33
  SELECT
34
+ r.uuid as r_uuid,
35
+ q.question,
36
+ q.theme as question_theme,
37
+ q.domain as question_domain,
38
+ r.model as response_model,
39
+ r.content as response_content,
40
+ a.judge_model,
41
+ a.compliance,
42
+ a.judge_analysis
43
+ FROM MismatchedResponses mr
44
+ JOIN responses r ON mr.r_uuid = r.uuid
45
+ JOIN questions q ON r.q_uuid = q.uuid
46
  JOIN assessments a ON mr.r_uuid = a.r_uuid
47
+ WHERE
48
+ a.judge_model IN (?, ?) -- Only get assessments from the two judges in question
49
+ ORDER BY r.uuid;
50
  `;
51
  const params = [
52
+ judge1, judge2,
53
  theme, theme,
54
+ judge1, j1_compliance,
55
+ judge2, j2_compliance,
56
  judge1, judge2
57
  ];
58
  const rows = await db.query<any>(sql, ...params);
src/lib/ingest.ts CHANGED
@@ -41,7 +41,6 @@ async function rebuildDatabase() {
41
  await query(db, 'INSTALL json; LOAD json;');
42
 
43
  console.log('Creating database schema...');
44
- // TODO : Indexing?
45
  await query(db, `
46
  CREATE TABLE themes (slug VARCHAR PRIMARY KEY, name VARCHAR);
47
  CREATE TABLE questions (uuid VARCHAR PRIMARY KEY, id VARCHAR, category VARCHAR, domain VARCHAR, question VARCHAR, theme VARCHAR);
@@ -50,6 +49,13 @@ async function rebuildDatabase() {
50
  `);
51
  console.log('Schema created.');
52
 
 
 
 
 
 
 
 
53
  console.log('Ingesting themes and questions...');
54
  await query(db, `
55
  INSERT INTO themes (slug, name)
 
41
  await query(db, 'INSTALL json; LOAD json;');
42
 
43
  console.log('Creating database schema...');
 
44
  await query(db, `
45
  CREATE TABLE themes (slug VARCHAR PRIMARY KEY, name VARCHAR);
46
  CREATE TABLE questions (uuid VARCHAR PRIMARY KEY, id VARCHAR, category VARCHAR, domain VARCHAR, question VARCHAR, theme VARCHAR);
 
49
  `);
50
  console.log('Schema created.');
51
 
52
+ console.log('Creating indexes for faster queries...');
53
+ await query(db, `CREATE INDEX idx_assessments_r_uuid ON assessments (r_uuid);`);
54
+ await query(db, `CREATE INDEX idx_assessments_judge_compliance ON assessments (judge_model, compliance);`);
55
+ await query(db, `CREATE INDEX idx_responses_q_uuid ON responses (q_uuid);`);
56
+ await query(db, `CREATE INDEX idx_questions_theme ON questions (theme);`);
57
+ console.log('Indexes created.');
58
+
59
  console.log('Ingesting themes and questions...');
60
  await query(db, `
61
  INSERT INTO themes (slug, name)