diff --git a/lib/_data_ingestion/kanjidic/seed_data.dart b/lib/_data_ingestion/kanjidic/seed_data.dart index b5339d3..9752f94 100644 --- a/lib/_data_ingestion/kanjidic/seed_data.dart +++ b/lib/_data_ingestion/kanjidic/seed_data.dart @@ -62,14 +62,14 @@ Future seedKANJIDICData(List characters, Database db) async { for (final r in c.readings) { b.insert(KANJIDICTableNames.reading, r.sqlValue); } - for (final k in c.kunyomi) { - b.insert(KANJIDICTableNames.kunyomi, k.sqlValue); + for (final (i, y) in c.kunyomi.indexed) { + b.insert(KANJIDICTableNames.kunyomi, y.sqlValue..addAll({'orderNum': i + 1})); } - for (final o in c.onyomi) { - b.insert(KANJIDICTableNames.onyomi, o.sqlValue); + for (final (i, y) in c.onyomi.indexed) { + b.insert(KANJIDICTableNames.onyomi, y.sqlValue..addAll({'orderNum': i + 1})); } - for (final m in c.meanings) { - b.insert(KANJIDICTableNames.meaning, m.sqlValue); + for (final (i, m) in c.meanings.indexed) { + b.insert(KANJIDICTableNames.meaning, m.sqlValue..addAll({'orderNum': i + 1})); } for (final n in c.nanori) { b.insert( diff --git a/lib/search/kanji_search.dart b/lib/search/kanji_search.dart index f5af463..9596530 100644 --- a/lib/search/kanji_search.dart +++ b/lib/search/kanji_search.dart @@ -28,6 +28,7 @@ Future searchKanjiWithDbConnection( KANJIDICTableNames.kunyomi, where: "kanji = ?", whereArgs: [kanji], + orderBy: "orderNum", ); late final List> onyomis; @@ -35,6 +36,7 @@ Future searchKanjiWithDbConnection( KANJIDICTableNames.onyomi, where: "kanji = ?", whereArgs: [kanji], + orderBy: "orderNum", ); late final List> meanings; @@ -42,6 +44,7 @@ Future searchKanjiWithDbConnection( KANJIDICTableNames.meaning, where: "kanji = ? AND language = ?", whereArgs: [kanji, 'eng'], + orderBy: "orderNum", ); late final List> nanoris; diff --git a/migrations/0006_KANJIDIC2.sql b/migrations/0006_KANJIDIC2.sql index 19c2165..5a02ed3 100644 --- a/migrations/0006_KANJIDIC2.sql +++ b/migrations/0006_KANJIDIC2.sql @@ -128,30 +128,39 @@ CREATE INDEX "KANJIDIC_Reading_byReading" ON "KANJIDIC_Reading"("reading"); CREATE TABLE "KANJIDIC_Kunyomi" ( "kanji" CHAR(1) NOT NULL REFERENCES "KANJIDIC_Character"("literal"), + "orderNum" INTEGER NOT NULL, "yomi" TEXT NOT NULL, "isJouyou" BOOLEAN, + UNIQUE("kanji", "orderNum"), PRIMARY KEY ("kanji", "yomi") ) WITHOUT ROWID; +CREATE INDEX "KANJIDIC_Kunyomi_byKanji_byOrderNum" ON "KANJIDIC_Kunyomi"("kanji", "orderNum"); CREATE INDEX "KANJIDIC_Kunyomi_byYomi" ON "KANJIDIC_Kunyomi"("yomi"); CREATE TABLE "KANJIDIC_Onyomi" ( "kanji" CHAR(1) NOT NULL REFERENCES "KANJIDIC_Character"("literal"), + "orderNum" INTEGER NOT NULL, "yomi" TEXT NOT NULL, "type" VARCHAR(7) CHECK ("type" IN ('kan', 'go', 'tou', 'kan''you')), "isJouyou" BOOLEAN, + UNIQUE("kanji", "orderNum"), PRIMARY KEY ("kanji", "yomi") ) WITHOUT ROWID; +CREATE INDEX "KANJIDIC_Onyomi_byKanji_byOrderNum" ON "KANJIDIC_Onyomi"("kanji", "orderNum"); CREATE INDEX "KANJIDIC_Onyomi_byYomi" ON "KANJIDIC_Onyomi"("yomi"); CREATE TABLE "KANJIDIC_Meaning" ( "kanji" CHAR(1) NOT NULL REFERENCES "KANJIDIC_Character"("literal"), + "orderNum" INTEGER NOT NULL, "language" CHAR(3) NOT NULL DEFAULT "eng", "meaning" TEXT NOT NULL, + UNIQUE("kanji", "orderNum"), PRIMARY KEY ("kanji", "language", "meaning") ) WITHOUT ROWID; +CREATE INDEX "KANJIDIC_Meaning_byKanji_byOrderNum" ON "KANJIDIC_Meaning"("kanji", "orderNum"); CREATE INDEX "KANJIDIC_Meaning_byMeaning" ON "KANJIDIC_Meaning"("meaning"); CREATE TABLE "KANJIDIC_Nanori" (