jmdict: elementId instead of reading for element restriction tables
All checks were successful
Build and test / build (push) Successful in 8m0s
All checks were successful
Build and test / build (push) Successful in 8m0s
This commit is contained in:
@@ -148,13 +148,17 @@ Future<void> seedJMDictData(List<Entry> entries, Database db) async {
|
||||
for (final rk in s.restrictedToKanji) {
|
||||
b.insert(JMdictTableNames.senseRestrictedToKanji, {
|
||||
'senseId': s.senseId,
|
||||
'kanji': rk,
|
||||
'kanjiElementId': e.kanji
|
||||
.firstWhere((k) => k.reading == rk)
|
||||
.elementId,
|
||||
});
|
||||
}
|
||||
for (final rr in s.restrictedToReading) {
|
||||
b.insert(JMdictTableNames.senseRestrictedToReading, {
|
||||
'senseId': s.senseId,
|
||||
'reading': rr,
|
||||
'readingElementId': e.readings
|
||||
.firstWhere((r) => r.reading == rr)
|
||||
.elementId,
|
||||
});
|
||||
}
|
||||
for (final ls in s.languageSource) {
|
||||
|
||||
@@ -216,19 +216,43 @@ Future<List<Map<String, Object?>>> _sensepossQuery(
|
||||
Future<List<Map<String, Object?>>> _senserestrictedtokanjisQuery(
|
||||
DatabaseExecutor connection,
|
||||
List<int> senseIds,
|
||||
) => connection.query(
|
||||
JMdictTableNames.senseRestrictedToKanji,
|
||||
where: 'senseId IN (${List.filled(senseIds.length, '?').join(',')})',
|
||||
whereArgs: senseIds,
|
||||
) => connection.rawQuery(
|
||||
"""
|
||||
SELECT
|
||||
"${JMdictTableNames.senseRestrictedToKanji}".senseId,
|
||||
"${JMdictTableNames.senseRestrictedToKanji}".kanjiElementId,
|
||||
"${JMdictTableNames.kanjiElement}".reading
|
||||
FROM "${JMdictTableNames.senseRestrictedToKanji}"
|
||||
JOIN "${JMdictTableNames.kanjiElement}"
|
||||
ON "${JMdictTableNames.senseRestrictedToKanji}"."kanjiElementId" = "${JMdictTableNames.kanjiElement}"."elementId"
|
||||
WHERE
|
||||
"senseId" IN (${List.filled(senseIds.length, '?').join(',')})
|
||||
ORDER BY
|
||||
"${JMdictTableNames.senseRestrictedToKanji}"."senseId",
|
||||
"${JMdictTableNames.senseRestrictedToKanji}"."kanjiElementId"
|
||||
""",
|
||||
[...senseIds],
|
||||
);
|
||||
|
||||
Future<List<Map<String, Object?>>> _senserestrictedtoreadingsQuery(
|
||||
DatabaseExecutor connection,
|
||||
List<int> senseIds,
|
||||
) => connection.query(
|
||||
JMdictTableNames.senseRestrictedToReading,
|
||||
where: 'senseId IN (${List.filled(senseIds.length, '?').join(',')})',
|
||||
whereArgs: senseIds,
|
||||
) => connection.rawQuery(
|
||||
"""
|
||||
SELECT
|
||||
"${JMdictTableNames.senseRestrictedToReading}".senseId,
|
||||
"${JMdictTableNames.senseRestrictedToReading}".readingElementId,
|
||||
"${JMdictTableNames.readingElement}".reading
|
||||
FROM "${JMdictTableNames.senseRestrictedToReading}"
|
||||
JOIN "${JMdictTableNames.readingElement}"
|
||||
ON "${JMdictTableNames.senseRestrictedToReading}"."readingElementId" = "${JMdictTableNames.readingElement}"."elementId"
|
||||
WHERE
|
||||
"senseId" IN (${List.filled(senseIds.length, '?').join(',')})
|
||||
ORDER BY
|
||||
"${JMdictTableNames.senseRestrictedToReading}"."senseId",
|
||||
"${JMdictTableNames.senseRestrictedToReading}"."readingElementId"
|
||||
""",
|
||||
[...senseIds],
|
||||
);
|
||||
|
||||
Future<List<Map<String, Object?>>> _examplesentencesQuery(
|
||||
|
||||
@@ -318,7 +318,7 @@ List<WordSearchSense> _regroupSenses({
|
||||
.map((e) => e['reading'] as String)
|
||||
.toList(),
|
||||
restrictedToKanji: restrictedToKanjis
|
||||
.map((e) => e['kanji'] as String)
|
||||
.map((e) => e['reading'] as String)
|
||||
.toList(),
|
||||
fields: fields
|
||||
.map((e) => JMdictField.fromId(e['field'] as String))
|
||||
|
||||
@@ -116,18 +116,14 @@ CREATE TABLE "JMdict_Sense" (
|
||||
|
||||
CREATE TABLE "JMdict_SenseRestrictedToKanji" (
|
||||
"senseId" INTEGER NOT NULL REFERENCES "JMdict_Sense"("senseId"),
|
||||
"kanji" TEXT NOT NULL,
|
||||
"entryId" INTEGER NOT NULL GENERATED ALWAYS AS ("senseId" / 100) VIRTUAL,
|
||||
FOREIGN KEY ("entryId", "kanji") REFERENCES "JMdict_KanjiElement"("entryId", "reading"),
|
||||
PRIMARY KEY ("senseId", "kanji")
|
||||
"kanjiElementId" INTEGER NOT NULL REFERENCES "JMdict_KanjiElement"("elementId"),
|
||||
PRIMARY KEY ("senseId", "kanjiElementId")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE "JMdict_SenseRestrictedToReading" (
|
||||
"senseId" INTEGER NOT NULL REFERENCES "JMdict_Sense"("senseId"),
|
||||
"reading" TEXT NOT NULL,
|
||||
"entryId" INTEGER NOT NULL GENERATED ALWAYS AS ("senseId" / 100) VIRTUAL,
|
||||
FOREIGN KEY ("entryId", "reading") REFERENCES "JMdict_ReadingElement"("entryId", "reading"),
|
||||
PRIMARY KEY ("senseId", "reading")
|
||||
"readingElementId" INTEGER NOT NULL REFERENCES "JMdict_ReadingElement"("elementId"),
|
||||
PRIMARY KEY ("senseId", "readingElementId")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
-- In order to add xrefs, you will need to have added the entry to xref to.
|
||||
|
||||
Reference in New Issue
Block a user