85 lines
2.8 KiB
Dart
85 lines
2.8 KiB
Dart
import 'package:jadb/table_names/jmdict.dart';
|
|
import 'package:jadb/table_names/kanjidic.dart';
|
|
import 'package:jadb/table_names/radkfile.dart';
|
|
import 'package:jadb/table_names/tanos_jlpt.dart';
|
|
import 'package:sqflite_common/sqlite_api.dart';
|
|
|
|
class DatasourceVersions {
|
|
final String jmdictVersion;
|
|
final DateTime jmdictDate;
|
|
final String jmdictHash;
|
|
|
|
final String kanjidic2Version;
|
|
final DateTime kanjidic2Date;
|
|
final String kanjidic2Hash;
|
|
|
|
final String radkfileVersion;
|
|
final DateTime radkfileDate;
|
|
final String radkfileHash;
|
|
|
|
final String tanosJlptVersion;
|
|
final DateTime tanosJlptDate;
|
|
final String tanosJlptHash;
|
|
|
|
const DatasourceVersions({
|
|
required this.jmdictVersion,
|
|
required this.jmdictDate,
|
|
required this.jmdictHash,
|
|
required this.kanjidic2Version,
|
|
required this.kanjidic2Date,
|
|
required this.kanjidic2Hash,
|
|
required this.radkfileVersion,
|
|
required this.radkfileDate,
|
|
required this.radkfileHash,
|
|
required this.tanosJlptVersion,
|
|
required this.tanosJlptDate,
|
|
required this.tanosJlptHash,
|
|
});
|
|
}
|
|
|
|
DateTime _parseDateTime(String dateString) {
|
|
try {
|
|
return DateTime.parse(dateString);
|
|
} catch (e) {
|
|
if (RegExp(r'^\d{4}-\d{2}$').hasMatch(dateString)) {
|
|
return DateTime.parse('$dateString-01');
|
|
} else if (RegExp(r'^\d{4}$').hasMatch(dateString)) {
|
|
return DateTime.parse('$dateString-01-01');
|
|
} else {
|
|
throw FormatException('Invalid date format: $dateString');
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<DatasourceVersions> getDatasourceVersions(
|
|
final DatabaseExecutor connection,
|
|
) async {
|
|
final jmdictVersion = await connection
|
|
.query(JMdictTableNames.version)
|
|
.then((rows) => rows.first);
|
|
final kanjidic2Version = await connection
|
|
.query(KANJIDICTableNames.version)
|
|
.then((rows) => rows.first);
|
|
final radkfileVersion = await connection
|
|
.query(RADKFILETableNames.version)
|
|
.then((rows) => rows.first);
|
|
final tanosJlptVersion = await connection
|
|
.query(TanosJLPTTableNames.version)
|
|
.then((rows) => rows.first);
|
|
|
|
return DatasourceVersions(
|
|
jmdictVersion: jmdictVersion['version'] as String,
|
|
jmdictDate: _parseDateTime(jmdictVersion['date'].toString()),
|
|
jmdictHash: jmdictVersion['hash'] as String,
|
|
kanjidic2Version: kanjidic2Version['version'] as String,
|
|
kanjidic2Date: _parseDateTime(kanjidic2Version['date'].toString()),
|
|
kanjidic2Hash: kanjidic2Version['hash'] as String,
|
|
radkfileVersion: radkfileVersion['version'] as String,
|
|
radkfileDate: _parseDateTime(radkfileVersion['date'].toString()),
|
|
radkfileHash: radkfileVersion['hash'] as String,
|
|
tanosJlptVersion: tanosJlptVersion['version'] as String,
|
|
tanosJlptDate: _parseDateTime(tanosJlptVersion['date'].toString()),
|
|
tanosJlptHash: tanosJlptVersion['hash'] as String,
|
|
);
|
|
}
|