From 3f4fdf470d3b75c4610157ef35a980cc72656e11 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 13 Apr 2026 19:43:25 +0900 Subject: [PATCH] jmdict: store glossary type in different table --- lib/_data_ingestion/jmdict/objects.dart | 1 - lib/_data_ingestion/jmdict/seed_data.dart | 8 ++++++++ lib/table_names/jmdict.dart | 2 ++ migrations/0001_JMDict.sql | 9 ++++++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/_data_ingestion/jmdict/objects.dart b/lib/_data_ingestion/jmdict/objects.dart index a135ac3..bf71c43 100644 --- a/lib/_data_ingestion/jmdict/objects.dart +++ b/lib/_data_ingestion/jmdict/objects.dart @@ -108,7 +108,6 @@ class Glossary extends SQLWritable { Map get sqlValue => { // 'language': language, 'phrase': phrase, - 'type': type, }; } diff --git a/lib/_data_ingestion/jmdict/seed_data.dart b/lib/_data_ingestion/jmdict/seed_data.dart index b0e8255..37ad630 100644 --- a/lib/_data_ingestion/jmdict/seed_data.dart +++ b/lib/_data_ingestion/jmdict/seed_data.dart @@ -172,6 +172,14 @@ Future seedJMDictData(List entries, Database db) async { JMdictTableNames.senseGlossary, g.sqlValue..addAll({'senseId': s.senseId}), ); + + if (g.type != null) { + b.insert(JMdictTableNames.senseGlossaryType, { + 'senseId': s.senseId, + 'phrase': g.phrase, + 'type': g.type!, + }); + } } } } diff --git a/lib/table_names/jmdict.dart b/lib/table_names/jmdict.dart index ad35c4d..ba60239 100644 --- a/lib/table_names/jmdict.dart +++ b/lib/table_names/jmdict.dart @@ -11,6 +11,7 @@ abstract class JMdictTableNames { static const String senseDialect = 'JMdict_SenseDialect'; static const String senseField = 'JMdict_SenseField'; static const String senseGlossary = 'JMdict_SenseGlossary'; + static const String senseGlossaryType = 'JMdict_SenseGlossaryType'; static const String senseInfo = 'JMdict_SenseInfo'; static const String senseMisc = 'JMdict_SenseMisc'; static const String sensePOS = 'JMdict_SensePOS'; @@ -33,6 +34,7 @@ abstract class JMdictTableNames { senseDialect, senseField, senseGlossary, + senseGlossaryType, senseInfo, senseMisc, sensePOS, diff --git a/migrations/0001_JMDict.sql b/migrations/0001_JMDict.sql index 5982b4b..c67fb9b 100644 --- a/migrations/0001_JMDict.sql +++ b/migrations/0001_JMDict.sql @@ -225,13 +225,20 @@ CREATE TABLE "JMdict_SenseGlossary" ( "senseId" INTEGER NOT NULL REFERENCES "JMdict_Sense"("senseId"), "phrase" TEXT NOT NULL, -- "language" CHAR(3) NOT NULL DEFAULT "eng", - "type" TEXT, -- PRIMARY KEY ("senseId", "language", "phrase") PRIMARY KEY ("senseId", "phrase") ) WITHOUT ROWID; CREATE INDEX "JMdict_SenseGlossary_byPhrase" ON JMdict_SenseGlossary("phrase"); +CREATE TABLE "JMdict_SenseGlossaryType" ( + "senseId" INTEGER NOT NULL REFERENCES "JMdict_Sense"("senseId"), + "phrase" TEXT NOT NULL, + "type" TEXT NOT NULL, + PRIMARY KEY ("senseId", "phrase", "type"), + FOREIGN KEY ("senseId", "phrase") REFERENCES "JMdict_SenseGlossary"("senseId", "phrase") +) WITHOUT ROWID; + CREATE TABLE "JMdict_SenseInfo" ( "senseId" INTEGER NOT NULL REFERENCES "JMdict_Sense"("senseId"), "info" TEXT NOT NULL,