86 lines
2.5 KiB
Dart
86 lines
2.5 KiB
Dart
// Package imports:
|
||
import 'package:drift/drift.dart';
|
||
import 'package:remever/common/functions.dart';
|
||
import 'package:remever/database/database.dart';
|
||
import 'package:remever/database/tables.dart';
|
||
import 'package:remever/models/crud_collection_dto.dart';
|
||
|
||
part 'collections_dao.g.dart';
|
||
|
||
@DriftAccessor(tables: <Type>[Collections])
|
||
class CollectionsDao extends DatabaseAccessor<AppDatabase>
|
||
with _$CollectionsDaoMixin {
|
||
///
|
||
/// Репозиторий для работы с коллекциями
|
||
///
|
||
CollectionsDao(super.attachedDatabase);
|
||
|
||
/// Получение коллекций из базы данных
|
||
Stream<List<Collection>> getCollections(String? search) {
|
||
try {
|
||
return db.managers.collections
|
||
.filter((f) => f.title.contains(search ?? ''))
|
||
.watch();
|
||
} catch (e, st) {
|
||
logger.logError('Ошибка в методе getCollections', e, st);
|
||
|
||
throw ('EXEPTION');
|
||
}
|
||
}
|
||
|
||
Future<Collection?> getCollectionById(String? id) {
|
||
try {
|
||
return db.managers.collections
|
||
.filter((f) => f.id.equals(id))
|
||
.getSingleOrNull();
|
||
} catch (e, st) {
|
||
logger.logError('Ошибка в методе getCollectionById', e, st);
|
||
|
||
throw ('EXEPTION');
|
||
}
|
||
}
|
||
|
||
/// Создание коллекции
|
||
Future<void> createCollection(CrudCollectionDto dto) async {
|
||
try {
|
||
await db.managers.collections.create(
|
||
(o) => o(
|
||
title: dto.title,
|
||
desc: dto.desc,
|
||
isPublic: Value<bool>(dto.isPublic),
|
||
image: Value<String?>(dto.avatar),
|
||
),
|
||
);
|
||
} catch (e, st) {
|
||
logger.logError('Ошибка в методе createCollection', e, st);
|
||
}
|
||
}
|
||
|
||
/// Обновление коллекции
|
||
Future<void> updateCollection(CrudCollectionDto dto, String id) async {
|
||
try {
|
||
await db.managers.collections
|
||
.filter((f) => f.id(id))
|
||
.update(
|
||
(o) => o(
|
||
title: Value<String>(dto.title),
|
||
desc: Value<String>(dto.desc),
|
||
isPublic: Value<bool>(dto.isPublic),
|
||
image: Value<String?>(dto.avatar),
|
||
),
|
||
);
|
||
} catch (e, st) {
|
||
logger.logError('Ошибка в методе updateCollection', e, st);
|
||
}
|
||
}
|
||
|
||
/// Удаление коллекции
|
||
Future<void> deleteCollection(String id) async {
|
||
try {
|
||
await db.managers.collections.filter((f) => f.id(id)).delete();
|
||
} catch (e, st) {
|
||
logger.logError('Ошибка в методе deleteCollection', e, st);
|
||
}
|
||
}
|
||
}
|