Initial commit
This commit is contained in:
90
lib/data/repositories/analysis_repository_impl.dart
Normal file
90
lib/data/repositories/analysis_repository_impl.dart
Normal file
@@ -0,0 +1,90 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user