Files
trainhub-flutter/lib/data/repositories/analysis_repository_impl.dart
Kazimierz Ciołek 782986a632 Initial commit
2026-02-19 02:49:29 +01:00

91 lines
2.6 KiB
Dart

import 'package:drift/drift.dart';
import 'package:trainhub_flutter/core/utils/id_generator.dart';
import 'package:trainhub_flutter/data/database/app_database.dart';
import 'package:trainhub_flutter/data/database/daos/analysis_dao.dart';
import 'package:trainhub_flutter/data/mappers/analysis_mapper.dart';
import 'package:trainhub_flutter/domain/entities/analysis_session.dart';
import 'package:trainhub_flutter/domain/entities/annotation.dart';
import 'package:trainhub_flutter/domain/repositories/analysis_repository.dart';
class AnalysisRepositoryImpl implements AnalysisRepository {
final AnalysisDao _dao;
AnalysisRepositoryImpl(this._dao);
@override
Future<List<AnalysisSessionEntity>> getAllSessions() async {
final rows = await _dao.getAllSessions();
return rows.map(AnalysisMapper.sessionToEntity).toList();
}
@override
Future<AnalysisSessionEntity?> getSession(String id) async {
final row = await _dao.getSession(id);
return row == null ? null : AnalysisMapper.sessionToEntity(row);
}
@override
Future<AnalysisSessionEntity> createSession(
String name, String videoPath) async {
final String id = IdGenerator.generate();
await _dao.insertSession(
AnalysisSessionsCompanion.insert(
id: id,
name: name,
videoPath: Value(videoPath),
date: DateTime.now().toIso8601String(),
),
);
final row = await _dao.getSession(id);
return AnalysisMapper.sessionToEntity(row!);
}
@override
Future<void> deleteSession(String id) async {
await _dao.deleteSession(id);
}
@override
Future<List<AnnotationEntity>> getAnnotations(String sessionId) async {
final rows = await _dao.getAnnotations(sessionId);
return rows.map(AnalysisMapper.annotationToEntity).toList();
}
@override
Future<AnnotationEntity> addAnnotation({
required String sessionId,
required String name,
required String description,
required double startTime,
required double endTime,
required String color,
}) async {
final String id = IdGenerator.generate();
await _dao.insertAnnotation(
AnnotationsCompanion.insert(
id: id,
sessionId: sessionId,
name: Value(name),
description: Value(description),
startTime: startTime,
endTime: endTime,
color: Value(color),
),
);
return AnnotationEntity(
id: id,
sessionId: sessionId,
startTime: startTime,
endTime: endTime,
name: name,
description: description,
color: color,
);
}
@override
Future<void> deleteAnnotation(String id) async {
await _dao.deleteAnnotation(id);
}
}