diff options
Diffstat (limited to 'src/lib/db/index.ts')
-rw-r--r-- | src/lib/db/index.ts | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib/db/index.ts b/src/lib/db/index.ts index 3d46fd9..a710a1e 100644 --- a/src/lib/db/index.ts +++ b/src/lib/db/index.ts @@ -2,6 +2,7 @@ import Database from "bun:sqlite"; import { getDBOffset, wordFactorial } from "../utils"; import type { AddSense, AddWord, State } from "../types"; import { DEFAULT_SRS } from "../services/srs"; +import { DBWord, WordData } from "@/zoom/logic/types"; const PAGE_SIZE = 100; @@ -199,7 +200,28 @@ class DatabaseHandler { ORDER BY e.frequency DESC `; const query = this.db.query(queryString); - return query.get(spelling, lang); + const row = query.get(spelling, lang) as DBWord | null; + if (!row) return row; + const sense_array = JSON.parse(row.senses_array); + const senses = sense_array.map((s: any) => { + const senses = JSON.parse(s.senses); + const related = JSON.parse(s.related); + const forms = JSON.parse(s.forms); + return { ...s, senses, related, forms }; + }); + const expression: WordData = { + ipa: JSON.parse(row.ipa), + prosody: JSON.parse(row.prosody), + syllables: row.syllables, + frequency: row.frequency, + type: row.type, + lang: row.lang, + spelling: row.spelling, + id: row.id, + confidence: row.confidence, + senses, + }; + return expression; } fetchExpressionsByCard(cid: number) { const queryString = ` |