WIP - More decoupling of data layer from ui layer

This commit is contained in:
Anton Stubenbord
2022-12-09 00:54:39 +01:00
parent 75fa2f7713
commit c9694fa8d0
87 changed files with 2508 additions and 1879 deletions

View File

@@ -14,25 +14,25 @@ import 'package:paperless_api/src/models/labels/tag_model.dart';
///
abstract class PaperlessLabelsApi {
Future<Correspondent?> getCorrespondent(int id);
Future<List<Correspondent>> getCorrespondents();
Future<List<Correspondent>> getCorrespondents([Iterable<int>? ids]);
Future<Correspondent> saveCorrespondent(Correspondent correspondent);
Future<Correspondent> updateCorrespondent(Correspondent correspondent);
Future<int> deleteCorrespondent(Correspondent correspondent);
Future<Tag?> getTag(int id);
Future<List<Tag>> getTags({List<int>? ids});
Future<List<Tag>> getTags([Iterable<int>? ids]);
Future<Tag> saveTag(Tag tag);
Future<Tag> updateTag(Tag tag);
Future<int> deleteTag(Tag tag);
Future<DocumentType?> getDocumentType(int id);
Future<List<DocumentType>> getDocumentTypes();
Future<List<DocumentType>> getDocumentTypes([Iterable<int>? ids]);
Future<DocumentType> saveDocumentType(DocumentType type);
Future<DocumentType> updateDocumentType(DocumentType documentType);
Future<int> deleteDocumentType(DocumentType documentType);
Future<StoragePath?> getStoragePath(int id);
Future<List<StoragePath>> getStoragePaths();
Future<List<StoragePath>> getStoragePaths([Iterable<int>? ids]);
Future<StoragePath> saveStoragePath(StoragePath path);
Future<StoragePath> updateStoragePath(StoragePath path);
Future<int> deleteStoragePath(StoragePath path);

View File

@@ -35,7 +35,7 @@ class PaperlessLabelApiImpl implements PaperlessLabelsApi {
}
@override
Future<List<Tag>> getTags({List<int>? ids}) async {
Future<List<Tag>> getTags([Iterable<int>? ids]) async {
final results = await getCollection(
"/api/tags/?page=1&page_size=100000",
Tag.fromJson,
@@ -59,23 +59,31 @@ class PaperlessLabelApiImpl implements PaperlessLabelsApi {
}
@override
Future<List<Correspondent>> getCorrespondents() {
return getCollection(
Future<List<Correspondent>> getCorrespondents([Iterable<int>? ids]) async {
final results = await getCollection(
"/api/correspondents/?page=1&page_size=100000",
Correspondent.fromJson,
ErrorCode.correspondentLoadFailed,
client: client,
);
return results
.where((element) => ids?.contains(element.id) ?? true)
.toList();
}
@override
Future<List<DocumentType>> getDocumentTypes() {
return getCollection(
Future<List<DocumentType>> getDocumentTypes([Iterable<int>? ids]) async {
final results = await getCollection(
"/api/document_types/?page=1&page_size=100000",
DocumentType.fromJson,
ErrorCode.documentTypeLoadFailed,
client: client,
);
return results
.where((element) => ids?.contains(element.id) ?? true)
.toList();
}
@override
@@ -261,13 +269,17 @@ class PaperlessLabelApiImpl implements PaperlessLabelsApi {
}
@override
Future<List<StoragePath>> getStoragePaths() {
return getCollection(
Future<List<StoragePath>> getStoragePaths([Iterable<int>? ids]) async {
final results = await getCollection(
"/api/storage_paths/?page=1&page_size=100000",
StoragePath.fromJson,
ErrorCode.storagePathLoadFailed,
client: client,
);
return results
.where((element) => ids?.contains(element.id) ?? true)
.toList();
}
@override

View File

@@ -1,7 +1,8 @@
import 'package:paperless_api/src/models/saved_view_model.dart';
abstract class PaperlessSavedViewsApi {
Future<List<SavedView>> getAll();
Future<SavedView> find(int id);
Future<Iterable<SavedView>> findAll([Iterable<int>? ids]);
Future<SavedView> save(SavedView view);
Future<int> delete(SavedView view);

View File

@@ -14,13 +14,15 @@ class PaperlessSavedViewsApiImpl implements PaperlessSavedViewsApi {
PaperlessSavedViewsApiImpl(this.client);
@override
Future<List<SavedView>> getAll() {
return getCollection(
Future<Iterable<SavedView>> findAll([Iterable<int>? ids]) async {
final result = await getCollection(
"/api/saved_views/",
SavedView.fromJson,
ErrorCode.loadSavedViewsError,
client: client,
);
return result.where((view) => ids?.contains(view.id!) ?? true);
}
@override
@@ -51,4 +53,14 @@ class PaperlessSavedViewsApiImpl implements PaperlessSavedViewsApi {
httpStatusCode: response.statusCode,
);
}
@override
Future<SavedView> find(int id) {
return getSingleResult(
"/api/saved_views/$id/",
SavedView.fromJson,
ErrorCode.loadSavedViewsError,
client: client,
);
}
}