83 lines
2.5 KiB
Dart
83 lines
2.5 KiB
Dart
import 'package:jadb/table_names/kanjidic.dart';
|
|
import 'package:sqflite_common/sqlite_api.dart';
|
|
|
|
import 'objects.dart';
|
|
|
|
Future<void> seedKANJIDICData(List<Character> characters, Database db) async {
|
|
final b = db.batch();
|
|
for (final c in characters) {
|
|
// if (c.dictionaryReferences.any((e) =>
|
|
// c.dictionaryReferences
|
|
// .where((e2) => e.kanji == e2.kanji && e.type == e2.type)
|
|
// .length >
|
|
// 1)) {
|
|
// print(c.dictionaryReferences.map((e) => e.sqlValue).toList());
|
|
// }
|
|
b.insert(KANJIDICTableNames.character, c.sqlValue);
|
|
|
|
for (final n in c.radicalName) {
|
|
assert(c.radical != null, 'Radical name without radical');
|
|
b.insert(
|
|
KANJIDICTableNames.radicalName,
|
|
{'radicalId': c.radical!.radicalId, 'name': n},
|
|
conflictAlgorithm: ConflictAlgorithm.ignore,
|
|
);
|
|
}
|
|
|
|
for (final cp in c.codepoints) {
|
|
b.insert(KANJIDICTableNames.codepoint, cp.sqlValue);
|
|
}
|
|
if (c.radical != null) {
|
|
b.insert(KANJIDICTableNames.radical, c.radical!.sqlValue);
|
|
}
|
|
for (final sm in c.strokeMiscounts) {
|
|
b.insert(KANJIDICTableNames.strokeMiscount, {
|
|
'kanji': c.literal,
|
|
'strokeCount': sm,
|
|
});
|
|
}
|
|
for (final v in c.variants) {
|
|
b.insert(KANJIDICTableNames.variant, v.sqlValue);
|
|
}
|
|
for (final dr in c.dictionaryReferences) {
|
|
// There are duplicate entries here
|
|
b.insert(
|
|
KANJIDICTableNames.dictionaryReference,
|
|
dr.sqlValue,
|
|
conflictAlgorithm: ConflictAlgorithm.ignore,
|
|
);
|
|
}
|
|
for (final drm in c.dictionaryReferencesMoro) {
|
|
b.insert(KANJIDICTableNames.dictionaryReferenceMoro, drm.sqlValue);
|
|
}
|
|
for (final q in c.querycodes) {
|
|
b.insert(KANJIDICTableNames.queryCode, q.sqlValue);
|
|
}
|
|
for (final r in c.readings) {
|
|
b.insert(KANJIDICTableNames.reading, r.sqlValue);
|
|
}
|
|
for (final (i, y) in c.kunyomi.indexed) {
|
|
b.insert(
|
|
KANJIDICTableNames.kunyomi,
|
|
y.sqlValue..addAll({'orderNum': i + 1}),
|
|
);
|
|
}
|
|
for (final (i, y) in c.onyomi.indexed) {
|
|
b.insert(
|
|
KANJIDICTableNames.onyomi,
|
|
y.sqlValue..addAll({'orderNum': i + 1}),
|
|
);
|
|
}
|
|
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(KANJIDICTableNames.nanori, {'kanji': c.literal, 'nanori': n});
|
|
}
|
|
}
|
|
await b.commit(noResult: true);
|
|
}
|