lib/search: use const table names

This commit is contained in:
2025-05-21 12:38:25 +02:00
parent 4d75bef208
commit b8eba03000
2 changed files with 43 additions and 40 deletions

View File

@@ -1,4 +1,6 @@
import 'package:collection/collection.dart';
import 'package:jadb/_data_ingestion/kanjidic/table_names.dart';
import 'package:jadb/_data_ingestion/radkfile/table_names.dart';
import 'package:jadb/models/kanji_search/kanji_search_radical.dart';
import 'package:jadb/models/kanji_search/kanji_search_result.dart';
import 'package:sqflite_common/sqflite.dart';
@@ -9,57 +11,57 @@ Future<KanjiSearchResult?> searchKanjiWithDbConnection(
) async {
late final List<Map<String, Object?>> characters;
final characters_query = connection.query(
"KANJIDIC_Character",
where: "KANJIDIC_Character.literal = ?",
KANJIDICTableNames.character,
where: "literal = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> codepoints;
final codepoints_query = connection.query(
"KANJIDIC_Codepoint",
where: "KANJIDIC_Codepoint.kanji = ?",
KANJIDICTableNames.codepoint,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> kunyomis;
final kunyomis_query = connection.query(
"KANJIDIC_Kunyomi",
where: "KANJIDIC_Kunyomi.kanji = ?",
KANJIDICTableNames.kunyomi,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> onyomis;
final onyomis_query = connection.query(
"KANJIDIC_Onyomi",
where: "KANJIDIC_Onyomi.kanji = ?",
KANJIDICTableNames.onyomi,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> meanings;
final meanings_query = connection.query(
"KANJIDIC_Meaning",
where: "KANJIDIC_Meaning.kanji = ? AND KANJIDIC_Meaning.language = ?",
KANJIDICTableNames.meaning,
where: "kanji = ? AND language = ?",
whereArgs: [kanji, 'eng'],
);
late final List<Map<String, Object?>> nanoris;
final nanoris_query = connection.query(
"KANJIDIC_Nanori",
where: "KANJIDIC_Nanori.kanji = ?",
KANJIDICTableNames.nanori,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> dictionary_references;
final dictionary_references_query = connection.query(
"KANJIDIC_DictionaryReference",
where: "KANJIDIC_DictionaryReference.kanji = ?",
KANJIDICTableNames.dictionaryReference,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> query_codes;
final query_codes_query = connection.query(
"KANJIDIC_QueryCode",
where: "KANJIDIC_QueryCode.kanji = ?",
KANJIDICTableNames.queryCode,
where: "kanji = ?",
whereArgs: [kanji],
);
@@ -69,44 +71,44 @@ Future<KanjiSearchResult?> searchKanjiWithDbConnection(
SELECT DISTINCT
"XREF__KANJIDIC_Radical__RADKFILE"."radicalSymbol" AS "symbol",
"names"
FROM "KANJIDIC_Radical"
FROM "${KANJIDICTableNames.radical}"
JOIN "XREF__KANJIDIC_Radical__RADKFILE" USING ("radicalId")
LEFT JOIN (
SELECT "radicalId", group_concat("name") AS "names"
FROM "KANJIDIC_RadicalName"
FROM "${KANJIDICTableNames.radicalName}"
GROUP BY "radicalId"
) USING ("radicalId")
WHERE "KANJIDIC_Radical"."kanji" = ?
WHERE "${KANJIDICTableNames.radical}"."kanji" = ?
''',
[kanji],
);
late final List<Map<String, Object?>> parts;
final parts_query = connection.query(
"RADKFILE",
where: "RADKFILE.kanji = ?",
RADKFILETableNames.radkfile,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> readings;
final readings_query = connection.query(
"KANJIDIC_Reading",
where: "KANJIDIC_Reading.kanji = ?",
KANJIDICTableNames.reading,
where: "kanji = ?",
whereArgs: [kanji],
);
late final List<Map<String, Object?>> stroke_miscounts;
final stroke_miscounts_query = connection.query(
"KANJIDIC_StrokeMiscount",
where: "KANJIDIC_StrokeMiscount.kanji = ?",
KANJIDICTableNames.strokeMiscount,
where: "kanji = ?",
whereArgs: [kanji],
);
// TODO: add variant data to result
// late final List<Map<String, Object?>> variants;
// final variants_query = connection.query(
// "KANJIDIC_Variant",
// where: "KANJIDIC_Variant.kanji = ?",
// KANJIDICTableNames.variant,
// where: "kanji = ?",
// whereArgs: [kanji],
// );

View File

@@ -1,3 +1,4 @@
import 'package:jadb/_data_ingestion/radkfile/table_names.dart';
import 'package:sqflite_common/sqlite_api.dart';
// TODO: validate that the list of radicals all are valid radicals
@@ -8,14 +9,14 @@ Future<List<String>> searchRemainingRadicalsWithDbConnection(
) async {
final queryResult = await connection.rawQuery(
'''
SELECT DISTINCT radical
FROM RADKFILE
WHERE kanji IN (
SELECT kanji
FROM RADKFILE
WHERE radical IN (${List.filled(radicals.length, '?').join(',')})
GROUP BY kanji
HAVING COUNT(DISTINCT radical) = ?
SELECT DISTINCT "radical"
FROM "${RADKFILETableNames.radkfile}"
WHERE "kanji" IN (
SELECT "kanji"
FROM "${RADKFILETableNames.radkfile}"
WHERE "radical" IN (${List.filled(radicals.length, '?').join(',')})
GROUP BY "kanji"
HAVING COUNT(DISTINCT "radical") = ?
)
''',
[
@@ -36,11 +37,11 @@ Future<List<String>> searchKanjiByRadicalsWithDbConnection(
) async {
final queryResult = await connection.rawQuery(
'''
SELECT kanji
FROM RADKFILE
WHERE radical IN (${List.filled(radicals.length, '?').join(',')})
GROUP BY kanji
HAVING COUNT(DISTINCT radical) = ?
SELECT "kanji"
FROM "${RADKFILETableNames.radkfile}"
WHERE "radical" IN (${List.filled(radicals.length, '?').join(',')})
GROUP BY "kanji"
HAVING COUNT(DISTINCT "radical") = ?
''',
[
...radicals,