From 24d3fc4f1a2cc42052c1e40f8984d8c4f4ea0fbb Mon Sep 17 00:00:00 2001 From: dvdrw Date: Tue, 12 May 2026 16:36:59 +0200 Subject: [PATCH] feat: align Sensor repo with API, implement Phoenix repo --- .../phoenix_sensor_repository.dart | 35 ++++++++++++++----- lib/data/repositories/sensor_repository.dart | 12 ++++--- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/lib/data/repositories/phoenix_sensor_repository.dart b/lib/data/repositories/phoenix_sensor_repository.dart index 407d88d..6195e7d 100644 --- a/lib/data/repositories/phoenix_sensor_repository.dart +++ b/lib/data/repositories/phoenix_sensor_repository.dart @@ -1,5 +1,4 @@ import '../../domain/models/sensor.dart'; -import '../../domain/models/position.dart'; import '../sources/localiser/sensor_client.dart'; import 'sensor_repository.dart'; @@ -9,19 +8,39 @@ class PhoenixSensorRepository implements SensorRepository { final SensorClient client; @override - Future> getSensors() => throw UnimplementedError(); + Future> getSensors() async { + final list = await client.getSensors(); + return list.map((j) => Sensor.fromJson(j as Map)).toList(); + } @override - Future getSensor(String id) => throw UnimplementedError(); + Future> getUnplacedSensors() async { + final list = await client.getUnplacedSensors(); + return list.map((j) => Sensor.fromJson(j as Map)).toList(); + } @override - Future createSensor({required String name, required Position position}) => - throw UnimplementedError(); + Future getSensor(int id) async => + Sensor.fromJson(await client.getSensor(id)); @override - Future updateSensor(String id, {String? name, Position? position}) => - throw UnimplementedError(); + Future updateSensor(int id, {String? name, double? rssiRef}) async { + final params = {}; + if (name != null) params['name'] = name; + if (rssiRef != null) params['rssi_ref'] = rssiRef; + return Sensor.fromJson(await client.updateSensor(id, params)); + } @override - Future deleteSensor(String id) => throw UnimplementedError(); + Future deleteSensor(int id) => client.deleteSensor(id); + + @override + Future placeSensor(int id, + {required int roomId, required double x, required double y}) async => + Sensor.fromJson( + await client.placeSensor(id, {'room_id': roomId, 'x': x, 'y': y})); + + @override + Future unplaceSensor(int id) async => + Sensor.fromJson(await client.unplaceSensor(id)); } diff --git a/lib/data/repositories/sensor_repository.dart b/lib/data/repositories/sensor_repository.dart index cf4ce0b..028078f 100644 --- a/lib/data/repositories/sensor_repository.dart +++ b/lib/data/repositories/sensor_repository.dart @@ -1,10 +1,12 @@ import '../../domain/models/sensor.dart'; -import '../../domain/models/position.dart'; abstract class SensorRepository { Future> getSensors(); - Future getSensor(String id); - Future createSensor({required String name, required Position position}); - Future updateSensor(String id, {String? name, Position? position}); - Future deleteSensor(String id); + Future> getUnplacedSensors(); + Future getSensor(int id); + Future updateSensor(int id, {String? name, double? rssiRef}); + Future deleteSensor(int id); + Future placeSensor(int id, + {required int roomId, required double x, required double y}); + Future unplaceSensor(int id); }