Spaces:
Sleeping
Sleeping
indexing db
Browse files- api/mismatches.ts +29 -15
- 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
|
| 20 |
-
SELECT
|
| 21 |
-
|
| 22 |
-
|
| 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 |
-
|
| 29 |
-
a2.judge_model = ? AND a2.compliance = ? AND
|
| 30 |
(? IS NULL OR q.theme = ?)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
)
|
| 32 |
SELECT
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
JOIN assessments a ON mr.r_uuid = a.r_uuid
|
| 36 |
-
WHERE
|
| 37 |
-
|
|
|
|
| 38 |
`;
|
| 39 |
const params = [
|
| 40 |
-
judge1,
|
| 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)
|