Files
jadb/lib/_data_ingestion/kanjidic/seed_data.dart
T

86 lines
2.4 KiB
Dart

import 'package:jadb/_data_ingestion/kanjidic/table_names.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 k in c.kunyomi) {
b.insert(KANJIDICTableNames.kunyomi, k.sqlValue);
}
for (final o in c.onyomi) {
b.insert(KANJIDICTableNames.onyomi, o.sqlValue);
}
for (final m in c.meanings) {
b.insert(KANJIDICTableNames.meaning, m.sqlValue);
}
for (final n in c.nanori) {
b.insert(
KANJIDICTableNames.nanori,
{
'kanji': c.literal,
'nanori': n,
},
);
}
}
await b.commit(noResult: true);
}