query method
Implementation
@override
Future<UnpuberPackage?> query(String name, {String? version}) async {
final result = _db.select(
"SELECT record FROM meta WHERE JSON_VALID(record) = 1 AND json_extract(record, '\$.name') = ?",
[name]);
if (result.isEmpty) return null;
final record = jsonDecode(result.first['record']) as Map<String, dynamic>?;
if (record == null) return null;
if (version != null) {
final versions =
(record['versions'] as List?)?.cast<Map<String, dynamic>>();
if (versions == null) return null;
final matchedVersion = versions.firstWhere((v) => v['version'] == version,
orElse: () => <String, dynamic>{});
if (matchedVersion.isEmpty) return null;
return UnpuberPackage.fromJson({
...record,
'versions': [matchedVersion],
});
}
return UnpuberPackage.fromJson(record);
}