Skip to content

Commit

Permalink
Another huge batch of changes, still doesn't compile #269
Browse files Browse the repository at this point in the history
  • Loading branch information
MrCsabaToth committed Feb 17, 2023
1 parent db8279f commit 1dd040e
Show file tree
Hide file tree
Showing 35 changed files with 405 additions and 1,181 deletions.
25 changes: 15 additions & 10 deletions lib/devices/gadgets/fitness_equipment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:isar/isar.dart';
import '../../preferences/athlete_age.dart';
import '../../preferences/athlete_body_weight.dart';
import '../../preferences/athlete_gender.dart';
Expand All @@ -19,6 +20,7 @@ import '../../preferences/heart_rate_limiting.dart';
import '../../preferences/heart_rate_monitor_priority.dart';
import '../../preferences/log_level.dart';
import '../../persistence/isar/activity.dart';
import '../../persistence/isar/db_utils.dart';
import '../../persistence/isar/record.dart';
import '../../preferences/use_heart_rate_based_calorie_counting.dart';
import '../../preferences/use_hr_monitor_reported_calories.dart';
Expand Down Expand Up @@ -473,11 +475,8 @@ class FitnessEquipment extends DeviceBase with PowerSpeedMixin {
Future<void> setActivity(Activity activity) async {
_activity = activity;
lastRecord = RecordWithSport.getZero(sport);
if (Get.isRegistered<AppDatabase>()) {
final database = Get.find<AppDatabase>();
final lastRecord = activity.id != null
? await database.recordDao.findLastRecordOfActivity(activity.id)
: null;
if (Get.isRegistered<Isar>()) {
final lastRecord = activity.records.findAll().last();
continuationRecord = lastRecord ?? RecordWithSport.getZero(sport);
continuation = continuationRecord.hasCumulative();
if (logLevel >= logLevelInfo) {
Expand Down Expand Up @@ -853,9 +852,11 @@ class FitnessEquipment extends DeviceBase with PowerSpeedMixin {
if (_activity != null) {
_activity!.startDateTime = now;
_activity!.start = now.millisecondsSinceEpoch;
if (Get.isRegistered<AppDatabase>()) {
final database = Get.find<AppDatabase>();
database.activityDao.updateActivity(_activity!);
if (Get.isRegistered<Isar>()) {
final database = Get.find<Isar>();
database.writeTxnSync(() async {
database.activitys.putSync(_activity);
});
}
}
}
Expand Down Expand Up @@ -1208,12 +1209,16 @@ class FitnessEquipment extends DeviceBase with PowerSpeedMixin {
}

Future<void> refreshFactors() async {
final factors = await database.getFactors(device?.id.id ?? "");
if (!Get.isRegistered<Isar>()) {
return;
}

final factors = await DbUtils.getFactors(device?.id.id ?? "");
_powerFactor = factors.item1;
_calorieFactor = factors.item2;
_hrCalorieFactor = factors.item3;
_hrmCalorieFactor =
await database.calorieFactorValue(heartRateMonitor?.device?.id.id ?? "", true);
await DbUtils.calorieFactorValue(heartRateMonitor?.device?.id.id ?? "", true);

initPower2SpeedConstants();

Expand Down
24 changes: 17 additions & 7 deletions lib/import/csv_importer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ class CSVImporter with PowerSpeedMixin {
}

final prefService = Get.find<BasePrefService>();
final isar = Get.find<Isar>();
final database = Get.find<Isar>();

var deviceName = "";
var deviceId = mPowerImportDeviceId;
Expand Down Expand Up @@ -474,7 +474,7 @@ class CSVImporter with PowerSpeedMixin {
}
} else {
DeviceDescriptor device = DeviceFactory.getDescriptorForFourCC(schwinnACPerfPlusFourCC);
final factors = await isar.getFactors(deviceId);
final factors = await database.getFactors(deviceId); // TODO
fourCC = device.fourCC;
deviceName = deviceNamePrefixes[fourCC]![0];
sport = device.sport;
Expand Down Expand Up @@ -559,8 +559,9 @@ class CSVImporter with PowerSpeedMixin {
);

final extendTuning = prefService.get<bool>(extendTuningTag) ?? extendTuningDefault;
final id = await isar.activityDao.insertActivity(activity);
activity.id = id;
database.writeTxnSync(() {
database.activitys.putSync(activity);
});

final numRow = _lines.length - _linePointer;
_linePointer++;
Expand All @@ -584,7 +585,10 @@ class CSVImporter with PowerSpeedMixin {
heartRate: int.tryParse(values[2]),
sport: activity.sport,
);
await isar.recordDao.insertRecord(record);
database.writeTxnSync(() {
database.records.putSync(record);
activity.records.add(record);
});

_linePointer++;
recordCounter++;
Expand Down Expand Up @@ -705,7 +709,10 @@ class CSVImporter with PowerSpeedMixin {
SchwinnACPerformancePlus.extraCalorieFactor;
}
energy += dEnergy;
await isar.recordDao.insertRecord(record);
database.writeTxnSync(() {
database.records.putSync(record);
activity.records.add(record);
});

timeStamp += milliSecondsPerRecordInt;
elapsed += milliSecondsPerRecord;
Expand Down Expand Up @@ -733,7 +740,10 @@ class CSVImporter with PowerSpeedMixin {
activity.calories = energy.round();
}

await isar.activityDao.updateActivity(activity);
database.writeTxnSync(() async {
await activity.records.save(); // TODO: sync?
database.activitys.putSync(activity);
});

return activity;
}
Expand Down
11 changes: 11 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:isar/isar.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'devices/company_registry.dart';
import 'track_my_indoor_exercise_app.dart';
Expand All @@ -10,6 +11,16 @@ import 'utils/logging.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();

final isar = await Isar.open([
ActivitySchema,
CalorieTuneSchema,
DeviceUsageSchema,
PowerTuneSchema,
RecordSchema,
WorkoutSummarySchema,
]);
Get.put<Isar>(isar, permanent: true);

final prefService = await initPreferences();

final companyRegistry = CompanyRegistry();
Expand Down
19 changes: 0 additions & 19 deletions lib/persistence/floor/dao/activity_dao.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,6 @@ abstract class ActivityDao {
@Query('SELECT * FROM `$activitiesTableName` ORDER BY `start` DESC')
Future<List<Activity>> findAllActivities();

@Query('SELECT * FROM `$activitiesTableName` WHERE `id` = :id')
Future<Activity?> findActivityById(int id);

@Query('SELECT * FROM `$activitiesTableName` ORDER BY `start` DESC LIMIT :limit OFFSET :offset')
Future<List<Activity>> findActivities(int limit, int offset);

@Query(
'SELECT * FROM `$activitiesTableName` WHERE `device_id` = :deviceId and `end` = 0 ORDER BY `start` DESC')
Future<List<Activity>> findUnfinishedDeviceActivities(String deviceId);

@Query('SELECT * FROM `$activitiesTableName` WHERE `end` = 0')
Future<List<Activity>> findUnfinishedActivities();

@insert
Future<int> insertActivity(Activity activity);

@update
Future<int> updateActivity(Activity activity);

@delete
Future<int> deleteActivity(Activity activity);
}
20 changes: 0 additions & 20 deletions lib/persistence/floor/dao/calorie_tune_dao.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,6 @@ abstract class CalorieTuneDao {
@Query('SELECT * FROM `$calorieTuneTableName` ORDER BY `time` DESC')
Future<List<CalorieTune>> findAllCalorieTunes();

@Query('SELECT * FROM `$calorieTuneTableName` WHERE `id` = :id')
Future<CalorieTune?> findCalorieTuneById(int id);

@Query(
'SELECT * FROM `$calorieTuneTableName` WHERE `mac` = :mac AND `hr_based` = 0 ORDER BY `time` DESC LIMIT 1')
Future<CalorieTune?> findCalorieTuneByMac(String mac);

@Query(
'SELECT * FROM `$calorieTuneTableName` WHERE `mac` = :mac AND `hr_based` = 1 ORDER BY `time` DESC LIMIT 1')
Future<CalorieTune?> findHrCalorieTuneByMac(String mac);

@Query('SELECT * FROM `$calorieTuneTableName` ORDER BY `time` DESC LIMIT :limit OFFSET :offset')
Future<List<CalorieTune>> findCalorieTunes(int limit, int offset);

@insert
Future<int> insertCalorieTune(CalorieTune calorieTune);

@update
Future<int> updateCalorieTune(CalorieTune calorieTune);

@delete
Future<int> deleteCalorieTune(CalorieTune calorieTune);
}
18 changes: 0 additions & 18 deletions lib/persistence/floor/dao/device_usage_dao.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,4 @@ import '../models/device_usage.dart';
abstract class DeviceUsageDao {
@Query('SELECT * FROM `$deviceUsageTableName` ORDER BY `time` DESC')
Future<List<DeviceUsage>> findAllDeviceUsages();

@Query('SELECT * FROM `$deviceUsageTableName` WHERE `id` = :id')
Future<DeviceUsage?> findDeviceUsageById(int id);

@Query('SELECT * FROM `$deviceUsageTableName` WHERE `mac` = :mac ORDER BY `time` DESC LIMIT 1')
Future<DeviceUsage?> findDeviceUsageByMac(String mac);

@Query('SELECT * FROM `$deviceUsageTableName` ORDER BY `time` DESC LIMIT :limit OFFSET :offset')
Future<List<DeviceUsage>> findDeviceUsages(int limit, int offset);

@insert
Future<int> insertDeviceUsage(DeviceUsage deviceUsage);

@update
Future<int> updateDeviceUsage(DeviceUsage deviceUsage);

@delete
Future<int> deleteDeviceUsage(DeviceUsage deviceUsage);
}
18 changes: 0 additions & 18 deletions lib/persistence/floor/dao/power_tune_dao.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,4 @@ import '../models/power_tune.dart';
abstract class PowerTuneDao {
@Query('SELECT * FROM `$powerTuneTableName` ORDER BY `time` DESC')
Future<List<PowerTune>> findAllPowerTunes();

@Query('SELECT * FROM `$powerTuneTableName` WHERE `id` = :id')
Future<PowerTune?> findPowerTuneById(int id);

@Query('SELECT * FROM `$powerTuneTableName` WHERE `mac` = :mac ORDER BY `time` DESC LIMIT 1')
Future<PowerTune?> findPowerTuneByMac(String mac);

@Query('SELECT * FROM `$powerTuneTableName` ORDER BY `time` DESC LIMIT :limit OFFSET :offset')
Future<List<PowerTune>> findPowerTunes(int limit, int offset);

@insert
Future<int> insertPowerTune(PowerTune powerTune);

@update
Future<int> updatePowerTune(PowerTune powerTune);

@delete
Future<int> deletePowerTune(PowerTune powerTune);
}
20 changes: 0 additions & 20 deletions lib/persistence/floor/dao/record_dao.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,4 @@ import '../models/record.dart';
abstract class RecordDao {
@Query('SELECT * FROM `$recordsTableName` ORDER BY `time_stamp`')
Future<List<Record>> findAllRecords();

@Query('SELECT * FROM `$recordsTableName` WHERE `id` = :id')
Future<Record?> findRecordById(int id);

@Query(
'SELECT * FROM `$recordsTableName` WHERE `activity_id` = :activityId ORDER BY `time_stamp`')
Future<List<Record>> findAllActivityRecords(int activityId);

@Query(
'SELECT * FROM `$recordsTableName` WHERE `activity_id` = :activityId ORDER BY `time_stamp` DESC LIMIT 1')
Future<Record?> findLastRecordOfActivity(int activityId);

@insert
Future<void> insertRecord(Record record);

@update
Future<void> updateRecord(Record record);

@Query('DELETE FROM `$recordsTableName` WHERE `activity_id` = :activityId')
Future<List<Record>> deleteAllActivityRecords(int activityId);
}
32 changes: 1 addition & 31 deletions lib/persistence/floor/dao/workout_summary_dao.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,9 @@ import '../models/workout_summary.dart';

@dao
abstract class WorkoutSummaryDao {
@Query('SELECT * FROM `$workoutSummariesTableName` ORDER BY `speed` DESC')
@Query('SELECT * FROM `$workoutSummariesTableName`')
Future<List<WorkoutSummary>> findAllWorkoutSummaries();

@Query('SELECT DISTINCT `sport` FROM `$workoutSummariesTableName`')
Future<List<String>> findDistinctWorkoutSummarySports();

@Query('SELECT COUNT(`id`) FROM `$workoutSummariesTableName`')
Future<int?> getLeaderboardDataCount();

@Query('SELECT * FROM `$workoutSummariesTableName` WHERE `id` = :id')
Future<WorkoutSummary?> findWorkoutSummaryById(int id);

@Query(
'SELECT * FROM `$workoutSummariesTableName` WHERE `device_id` = :deviceId ORDER BY `speed` DESC')
Future<List<WorkoutSummary>> findAllWorkoutSummariesByDevice(String deviceId);

@Query(
'SELECT * FROM `$workoutSummariesTableName` WHERE `device_id` = :deviceId ORDER BY `speed` DESC LIMIT :limit OFFSET :offset')
Future<List<WorkoutSummary>> findWorkoutSummaryByDevice(String deviceId, int limit, int offset);

@Query('SELECT * FROM `$workoutSummariesTableName` WHERE `sport` = :sport ORDER BY `speed` DESC')
Future<List<WorkoutSummary>> findAllWorkoutSummariesBySport(String sport);

@Query(
'SELECT * FROM `$workoutSummariesTableName` WHERE `sport` = :sport ORDER BY `speed` DESC LIMIT :limit OFFSET :offset')
Future<List<WorkoutSummary>> findWorkoutSummaryBySport(String sport, int limit, int offset);

@insert
Future<int> insertWorkoutSummary(WorkoutSummary workoutSummary);

@update
Future<int> updateWorkoutSummary(WorkoutSummary workoutSummary);

@delete
Future<int> deleteWorkoutSummary(WorkoutSummary workoutSummary);
}

0 comments on commit 1dd040e

Please sign in to comment.