diff --git a/flake.lock b/flake.lock index 6867cce..69cf84b 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1775550160, - "narHash": "sha256-bgvKrMGUPaDY4EZv+82z1ccYoxwaergdVw/3PZhc2Fc=", + "lastModified": 1776081209, + "narHash": "sha256-zR1115tcOPnYLk6NznSf7YslyaJLc/MGayEHShitx18=", "ref": "refs/heads/main", - "rev": "f46229af3678124c5ea7c8dff3292747d0274f69", - "revCount": 8, + "rev": "7fe3552bb16e1d315c0b27b243e5eb53cd9e86fc", + "revCount": 13, "type": "git", "url": "https://git.pvv.ntnu.no/Mugiten/datasources.git" }, diff --git a/lib/_data_ingestion/jmdict/seed_data.dart b/lib/_data_ingestion/jmdict/seed_data.dart index 37ad630..3f8a510 100644 --- a/lib/_data_ingestion/jmdict/seed_data.dart +++ b/lib/_data_ingestion/jmdict/seed_data.dart @@ -1,4 +1,5 @@ import 'dart:collection'; +import 'dart:io'; import 'package:collection/collection.dart'; import 'package:jadb/_data_ingestion/jmdict/objects.dart'; @@ -84,6 +85,21 @@ Future seedJMDictData(List entries, Database db) async { print(' [JMdict] Batch 1 - Kanji and readings'); Batch b = db.batch(); + if (Platform.environment['JMDICT_VERSION'] != null && + Platform.environment['JMDICT_DATE'] != null && + Platform.environment['JMDICT_HASH'] != null) { + b.insert(JMdictTableNames.version, { + 'version': Platform.environment['JMDICT_VERSION']!, + 'date': Platform.environment['JMDICT_DATE']!, + 'hash': Platform.environment['JMDICT_HASH']!, + }); + } else { + print( + 'WARNING: JMDICT version information not found in environment variables. ' + 'This may cause issues with future updates.', + ); + } + for (final e in entries) { b.insert(JMdictTableNames.entry, e.sqlValue); diff --git a/lib/_data_ingestion/kanjidic/seed_data.dart b/lib/_data_ingestion/kanjidic/seed_data.dart index 9a0e5bd..cf7e844 100644 --- a/lib/_data_ingestion/kanjidic/seed_data.dart +++ b/lib/_data_ingestion/kanjidic/seed_data.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:jadb/table_names/kanjidic.dart'; import 'package:sqflite_common/sqlite_api.dart'; @@ -5,6 +7,22 @@ import 'objects.dart'; Future seedKANJIDICData(List characters, Database db) async { final b = db.batch(); + + if (Platform.environment['KANJIDIC_VERSION'] != null && + Platform.environment['KANJIDIC_DATE'] != null && + Platform.environment['KANJIDIC_HASH'] != null) { + b.insert(KANJIDICTableNames.version, { + 'version': Platform.environment['KANJIDIC_VERSION']!, + 'date': Platform.environment['KANJIDIC_DATE']!, + 'hash': Platform.environment['KANJIDIC_HASH']!, + }); + } else { + print( + 'WARNING: KANJIDIC version information not found in environment variables. ' + 'This may cause issues with future updates.', + ); + } + for (final c in characters) { // if (c.dictionaryReferences.any((e) => // c.dictionaryReferences @@ -30,10 +48,7 @@ Future seedKANJIDICData(List characters, Database db) async { } if (c.jlpt != null) { - b.insert(KANJIDICTableNames.jlpt, { - 'kanji': c.literal, - 'jlpt': c.jlpt!, - }); + b.insert(KANJIDICTableNames.jlpt, {'kanji': c.literal, 'jlpt': c.jlpt!}); } for (final n in c.radicalName) { diff --git a/lib/_data_ingestion/radkfile/seed_data.dart b/lib/_data_ingestion/radkfile/seed_data.dart index 7bf6904..1eb058e 100644 --- a/lib/_data_ingestion/radkfile/seed_data.dart +++ b/lib/_data_ingestion/radkfile/seed_data.dart @@ -1,9 +1,26 @@ +import 'dart:io'; + import 'package:jadb/table_names/radkfile.dart'; import 'package:sqflite_common/sqlite_api.dart'; Future seedRADKFILEData(Iterable blocks, Database db) async { final b = db.batch(); + if (Platform.environment['RADKFILE_VERSION'] != null && + Platform.environment['RADKFILE_DATE'] != null && + Platform.environment['RADKFILE_HASH'] != null) { + b.insert(RADKFILETableNames.version, { + 'version': Platform.environment['RADKFILE_VERSION']!, + 'date': Platform.environment['RADKFILE_DATE']!, + 'hash': Platform.environment['RADKFILE_HASH']!, + }); + } else { + print( + 'WARNING: RADKFILE version information not found in environment variables. ' + 'This may cause issues with future updates.', + ); + } + for (final block in blocks) { final String radical = block[1]; final List kanjiList = diff --git a/lib/_data_ingestion/tanos-jlpt/seed_data.dart b/lib/_data_ingestion/tanos-jlpt/seed_data.dart index e38af22..9e9039b 100644 --- a/lib/_data_ingestion/tanos-jlpt/seed_data.dart +++ b/lib/_data_ingestion/tanos-jlpt/seed_data.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:jadb/table_names/tanos_jlpt.dart'; import 'package:sqflite_common/sqlite_api.dart'; @@ -7,6 +9,21 @@ Future seedTanosJLPTData( ) async { final Batch b = db.batch(); + if (Platform.environment['TANOS_JLPT_VERSION'] != null && + Platform.environment['TANOS_JLPT_DATE'] != null && + Platform.environment['TANOS_JLPT_HASH'] != null) { + b.insert(TanosJLPTTableNames.version, { + 'version': Platform.environment['TANOS_JLPT_VERSION']!, + 'date': Platform.environment['TANOS_JLPT_DATE']!, + 'hash': Platform.environment['TANOS_JLPT_HASH']!, + }); + } else { + print( + 'WARNING: Tanos JLPT version information not found in environment variables. ' + 'This may cause issues with future updates.', + ); + } + for (final jlptLevel in resolvedEntries.entries) { final level = jlptLevel.key; final entryIds = jlptLevel.value; diff --git a/nix/database.nix b/nix/database.nix index 845922b..2389991 100644 --- a/nix/database.nix +++ b/nix/database.nix @@ -19,13 +19,31 @@ stdenvNoCC.mkDerivation { sqlite ]; + env = { + JMDICT_VERSION = jmdict.version; + JMDICT_DATE = jmdict.date; + JMDICT_HASH = jmdict.hash; + + KANJIDIC_VERSION = kanjidic2.version; + KANJIDIC_DATE = kanjidic2.date; + KANJIDIC_HASH = kanjidic2.hash; + + RADKFILE_VERSION = radkfile.version; + RADKFILE_DATE = radkfile.date; + RADKFILE_HASH = radkfile.hash; + + TANOS_JLPT_VERSION = tanos-jlpt.version; + TANOS_JLPT_DATE = tanos-jlpt.date; + TANOS_JLPT_HASH = tanos-jlpt.hash; + }; + buildPhase = '' runHook preBuild mkdir -p data ln -s '${jmdict}'/* data/ - ln -s '${radkfile}'/* data/ ln -s '${kanjidic2}'/* data/ + ln -s '${radkfile}'/* data/ ln -s '${tanos-jlpt}' data/tanos-jlpt for migration in migrations/*.sql; do