// 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/create_ticket_dto.dart'; part 'tickets_dao.g.dart'; @DriftAccessor(tables: [Tickets]) class TicketsDao extends DatabaseAccessor with _$TicketsDaoMixin { /// /// Репозиторий для работы с билетами /// TicketsDao(super.attachedDatabase); /// Получение билетов из базы данных Stream> getTickets(String collectionId) { try { return db.managers.tickets .filter((f) => f.collectionId.id(collectionId)) .watch(); } catch (e, st) { logger.logError('Ошибка в методе getTickets', e, st); throw ('EXEPTION'); } } /// Удаление билета Future removeTicket(String id) async { try { await db.transaction(() { return db.managers.tickets.filter((f) => f.id(id)).delete(); }); } catch (e, st) { logger.logError('Ошибка в методе deleteTicket', e, st); } } /// Создание билета Future createTicket(CreateTicketDto dto) async { try { final TicketsCompanion companion = TicketsCompanion.insert( question: dto.question!, answer: dto.answer!, collectionId: dto.collection!.id, questionImage: Value(dto.questionImage), answerImage: Value(dto.answerImage), ); await db.managers.tickets.create((o) => companion); if (dto.needRevert != null && dto.needRevert!) { /// Создаем обратную карточку где ответ == вопрос и вопрос == ответ final TicketsCompanion revertCompanion = TicketsCompanion.insert( answer: dto.question!, question: dto.answer!, collectionId: dto.collection!.id, answerImage: Value(dto.questionImage), questionImage: Value(dto.answerImage), ); await db.managers.tickets.create((o) => revertCompanion); } } catch (e, st) { logger.logError('Ошибка в методе createTicket', e, st); } } /// Перенос билета с одной коллекции в другую Future transferTicket(String ticketId, String newCollectionId) async { try { await db.managers.tickets .filter((f) => f.id(ticketId)) .update((o) => o(collectionId: Value(newCollectionId))); } catch (e, st) { logger.logError('Ошибка в методе transferTicket', e, st); } } }