kanjidic: split grade/freq/jlpt into separate tables
All checks were successful
Build and test / build (push) Successful in 8m1s
All checks were successful
Build and test / build (push) Successful in 8m1s
This commit is contained in:
@@ -248,9 +248,6 @@ class Character extends SQLWritable {
|
||||
@override
|
||||
Map<String, Object?> get sqlValue => {
|
||||
'literal': literal,
|
||||
'grade': grade,
|
||||
'strokeCount': strokeCount,
|
||||
'frequency': frequency,
|
||||
'jlpt': jlpt,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,6 +15,27 @@ Future<void> seedKANJIDICData(List<Character> characters, Database db) async {
|
||||
// }
|
||||
b.insert(KANJIDICTableNames.character, c.sqlValue);
|
||||
|
||||
if (c.grade != null) {
|
||||
b.insert(KANJIDICTableNames.grade, {
|
||||
'kanji': c.literal,
|
||||
'grade': c.grade!,
|
||||
});
|
||||
}
|
||||
|
||||
if (c.frequency != null) {
|
||||
b.insert(KANJIDICTableNames.frequency, {
|
||||
'kanji': c.literal,
|
||||
'frequency': c.frequency!,
|
||||
});
|
||||
}
|
||||
|
||||
if (c.jlpt != null) {
|
||||
b.insert(KANJIDICTableNames.jlpt, {
|
||||
'kanji': c.literal,
|
||||
'jlpt': c.jlpt!,
|
||||
});
|
||||
}
|
||||
|
||||
for (final n in c.radicalName) {
|
||||
assert(c.radical != null, 'Radical name without radical');
|
||||
b.insert(
|
||||
|
||||
@@ -8,10 +8,21 @@ import 'package:sqflite_common/sqflite.dart';
|
||||
Future<List<Map<String, Object?>>> _charactersQuery(
|
||||
DatabaseExecutor connection,
|
||||
String kanji,
|
||||
) => connection.query(
|
||||
KANJIDICTableNames.character,
|
||||
where: 'literal = ?',
|
||||
whereArgs: [kanji],
|
||||
) => connection.rawQuery(
|
||||
'''
|
||||
SELECT
|
||||
"${KANJIDICTableNames.character}"."literal",
|
||||
"${KANJIDICTableNames.character}"."strokeCount",
|
||||
"${KANJIDICTableNames.grade}"."grade",
|
||||
"${KANJIDICTableNames.jlpt}"."jlpt",
|
||||
"${KANJIDICTableNames.frequency}"."frequency"
|
||||
FROM "${KANJIDICTableNames.character}"
|
||||
LEFT JOIN "${KANJIDICTableNames.grade}" ON "${KANJIDICTableNames.character}"."literal" = "${KANJIDICTableNames.grade}"."kanji"
|
||||
LEFT JOIN "${KANJIDICTableNames.jlpt}" ON "${KANJIDICTableNames.character}"."literal" = "${KANJIDICTableNames.jlpt}"."kanji"
|
||||
LEFT JOIN "${KANJIDICTableNames.frequency}" ON "${KANJIDICTableNames.character}"."literal" = "${KANJIDICTableNames.frequency}"."kanji"
|
||||
WHERE "literal" = ?
|
||||
''',
|
||||
[kanji],
|
||||
);
|
||||
|
||||
Future<List<Map<String, Object?>>> _codepointsQuery(
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
abstract class KANJIDICTableNames {
|
||||
static const String version = 'KANJIDIC_Version';
|
||||
static const String character = 'KANJIDIC_Character';
|
||||
static const String grade = 'KANJIDIC_Grade';
|
||||
static const String frequency = 'KANJIDIC_Frequency';
|
||||
static const String jlpt = 'KANJIDIC_JLPT';
|
||||
static const String radicalName = 'KANJIDIC_RadicalName';
|
||||
static const String codepoint = 'KANJIDIC_Codepoint';
|
||||
static const String radical = 'KANJIDIC_Radical';
|
||||
@@ -20,6 +23,9 @@ abstract class KANJIDICTableNames {
|
||||
static Set<String> get allTables => {
|
||||
version,
|
||||
character,
|
||||
grade,
|
||||
frequency,
|
||||
jlpt,
|
||||
radicalName,
|
||||
codepoint,
|
||||
radical,
|
||||
|
||||
@@ -19,6 +19,21 @@ CREATE TABLE "KANJIDIC_Character" (
|
||||
"jlpt" INTEGER
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE "KANJIDIC_Grade" (
|
||||
"kanji" CHAR(1) NOT NULL PRIMARY KEY REFERENCES "KANJIDIC_Character"("literal"),
|
||||
"grade" INTEGER NOT NULL CHECK ("grade" BETWEEN 1 AND 10)
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE "KANJIDIC_Frequency" (
|
||||
"kanji" CHAR(1) NOT NULL PRIMARY KEY REFERENCES "KANJIDIC_Character"("literal"),
|
||||
"frequency" INTEGER NOT NULL
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE "KANJIDIC_JLPT" (
|
||||
"kanji" CHAR(1) NOT NULL PRIMARY KEY REFERENCES "KANJIDIC_Character"("literal"),
|
||||
"jlpt" INTEGER NOT NULL CHECK ("jlpt" BETWEEN 1 AND 5)
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE "KANJIDIC_Codepoint" (
|
||||
"kanji" CHAR(1) NOT NULL REFERENCES "KANJIDIC_Character"("literal"),
|
||||
"type" VARCHAR(6) NOT NULL CHECK ("type" IN ('jis208', 'jis212', 'jis213', 'ucs')),
|
||||
|
||||
Reference in New Issue
Block a user