import 'package:dio/dio.dart';

import '../../models/search_response.dart';

/// SearchApi wraps GET /api/search. The server runs three facets (artists,
/// albums, tracks) sharing one limit/offset pair. Each facet returns its
/// own total reflecting the full match count.
class SearchApi {
  SearchApi(this._dio);
  final Dio _dio;

  /// Empty / whitespace-only query is the caller's responsibility to
  /// guard against — the server returns 400 bad_request for it.
  Future<SearchResponse> search(
    String query, {
    int limit = 20,
    int offset = 0,
  }) async {
    final r = await _dio.get<Map<String, dynamic>>(
      '/api/search',
      queryParameters: {
        'q': query,
        'limit': limit,
        'offset': offset,
      },
    );
    return SearchResponse.fromJson(r.data ?? const {});
  }
}
