feat: added search
This commit is contained in:
parent
b54b825dad
commit
166ee5b389
7 changed files with 193 additions and 60 deletions
|
|
@ -3,6 +3,7 @@ import 'package:seshat/domain/models/bal.dart';
|
|||
import 'package:seshat/domain/models/book.dart';
|
||||
import 'package:seshat/domain/models/book_instance.dart';
|
||||
import 'package:seshat/domain/models/owner.dart';
|
||||
import 'package:seshat/domain/models/search_result.dart';
|
||||
import 'package:seshat/utils/result.dart';
|
||||
|
||||
class BookInstanceRepository {
|
||||
|
|
@ -15,6 +16,14 @@ class BookInstanceRepository {
|
|||
return await _apiClient.getBookInstanceByEAN(balId, ean);
|
||||
}
|
||||
|
||||
Future<Result<List<SearchResult>>> getBySearch(
|
||||
int balId,
|
||||
String title,
|
||||
String author,
|
||||
) async {
|
||||
return await _apiClient.getBookInstanceBySearch(balId, title, author);
|
||||
}
|
||||
|
||||
Future<Result<BookInstance>> sendBook(
|
||||
Book book,
|
||||
Owner owner,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:seshat/domain/models/bal.dart';
|
|||
import 'package:seshat/domain/models/book.dart';
|
||||
import 'package:seshat/domain/models/book_instance.dart';
|
||||
import 'package:seshat/domain/models/owner.dart';
|
||||
import 'package:seshat/domain/models/search_result.dart';
|
||||
import 'package:seshat/utils/command.dart';
|
||||
import 'package:seshat/utils/result.dart';
|
||||
|
||||
|
|
@ -284,6 +285,36 @@ class ApiClient {
|
|||
* =============================
|
||||
*/
|
||||
|
||||
Future<Result<List<SearchResult>>> getBookInstanceBySearch(
|
||||
int balId,
|
||||
String title,
|
||||
String author,
|
||||
) async {
|
||||
final client = Client();
|
||||
try {
|
||||
final headers = await _getHeaders({"Content-Type": "application/json"});
|
||||
final body = jsonEncode({"title": title, "author": author});
|
||||
debugPrint("\n\n\n\n$body\n\n\n\n");
|
||||
final response = await client.post(
|
||||
Uri.parse("https://$apiBasePath/bal/${balId.toString()}/search"),
|
||||
headers: headers,
|
||||
body: body,
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
final json = jsonDecode(response.body) as List<dynamic>;
|
||||
debugPrint("\n\n\n\nJSON : $json\n\n\n\n");
|
||||
return Result.ok(json.map((el) => SearchResult.fromJSON(el)).toList());
|
||||
} else {
|
||||
throw "Unknown Error";
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("\n\n\n\nERROR: ${e.toString()}\n\n\n\n");
|
||||
return Result.error(Exception("API $e"));
|
||||
} finally {
|
||||
client.close();
|
||||
}
|
||||
}
|
||||
|
||||
Future<Result<List<BookInstance>>> getBookInstanceByEAN(
|
||||
int balId,
|
||||
int ean,
|
||||
|
|
|
|||
Reference in a new issue