50 lines
1.5 KiB
Dart
50 lines
1.5 KiB
Dart
import 'dart:math';
|
|
|
|
import 'package:injectable/injectable.dart';
|
|
import 'package:remever/database/database.dart';
|
|
import 'package:remever/inject.dart';
|
|
import 'package:remever/services/training/training_interface.dart';
|
|
|
|
@Singleton(as: TrainingInterface)
|
|
final class TrainingService implements TrainingInterface {
|
|
// @override
|
|
// Future<void> removeTicket(String ticketId) async {
|
|
// return await getIt<AppDatabase>().ticketsDao.removeTicket(ticketId);
|
|
// }
|
|
|
|
@override
|
|
Future<List<Ticket>> getTraining() async {
|
|
try {
|
|
final db = getIt<AppDatabase>();
|
|
|
|
final rows =
|
|
await db
|
|
.customSelect('SELECT * FROM tickets ORDER BY RANDOM() LIMIT 10')
|
|
.get();
|
|
|
|
return rows.map((row) {
|
|
final data = row.data;
|
|
print("ALARMA $data");
|
|
|
|
// Преобразуем snake_case ключи в camelCase для Moor сериализатора
|
|
final camelCaseData = {
|
|
'id': data['id'],
|
|
'createdAt': data['created_at'],
|
|
'updatedAt': data['updated_at'],
|
|
'question': data['question'],
|
|
'questionImage': data['question_image'],
|
|
'answer': data['answer'],
|
|
'answerImage': data['answer_image'],
|
|
'collectionId': data['collection_id'],
|
|
'progress': data['progress'],
|
|
};
|
|
|
|
return Ticket.fromJson(camelCaseData);
|
|
}).toList();
|
|
} catch (e) {
|
|
print('Error in training $e');
|
|
return [];
|
|
}
|
|
}
|
|
}
|