query method

  1. @override
Future<UnpuberPackage?> query(
  1. String name, {
  2. String? version,
})
override

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);
}