65 lines
2.9 KiB
Dart
65 lines
2.9 KiB
Dart
import 'package:drift/drift.dart';
|
|
|
|
class Rides extends Table {
|
|
IntColumn get id => integer().autoIncrement()();
|
|
DateTimeColumn get startTime => dateTime()();
|
|
DateTimeColumn get endTime => dateTime().nullable()();
|
|
RealColumn get distanceMiles => real().withDefault(const Constant(0.0))();
|
|
RealColumn get topSpeedMph => real().withDefault(const Constant(0.0))();
|
|
RealColumn get maxLeanLeft => real().withDefault(const Constant(0.0))();
|
|
RealColumn get maxLeanRight => real().withDefault(const Constant(0.0))();
|
|
RealColumn get maxAccelG => real().withDefault(const Constant(0.0))();
|
|
RealColumn get maxBrakingG => real().withDefault(const Constant(0.0))();
|
|
RealColumn get best0to60Ms => real().nullable()();
|
|
RealColumn get best0to100Ms => real().nullable()();
|
|
|
|
// Phase 2 additions
|
|
RealColumn get distance => real().withDefault(const Constant(0.0))(); // Total distance (e.g., meters)
|
|
IntColumn get movingTime => integer().withDefault(const Constant(0))(); // seconds
|
|
IntColumn get stoppedTime => integer().withDefault(const Constant(0))(); // seconds
|
|
RealColumn get averageSpeed => real().withDefault(const Constant(0.0))();
|
|
RealColumn get topSpeed => real().withDefault(const Constant(0.0))();
|
|
RealColumn get elevationGain => real().withDefault(const Constant(0.0))();
|
|
RealColumn get elevationLoss => real().withDefault(const Constant(0.0))();
|
|
}
|
|
|
|
class TelemetrySamples extends Table {
|
|
IntColumn get id => integer().autoIncrement()();
|
|
IntColumn get rideId => integer().references(Rides, #id)();
|
|
DateTimeColumn get timestamp => dateTime()();
|
|
|
|
RealColumn get latitude => real().nullable()();
|
|
RealColumn get longitude => real().nullable()();
|
|
RealColumn get altitude => real().nullable()();
|
|
RealColumn get speed => real().nullable()(); // MPH
|
|
RealColumn get heading => real().nullable()();
|
|
RealColumn get gpsAccuracy => real().nullable()();
|
|
|
|
RealColumn get leanAngle => real().nullable()();
|
|
RealColumn get pitchAngle => real().nullable()();
|
|
RealColumn get accelX => real().nullable()();
|
|
RealColumn get accelY => real().nullable()();
|
|
RealColumn get accelZ => real().nullable()();
|
|
RealColumn get longitudinalG => real().nullable()();
|
|
RealColumn get lateralG => real().nullable()();
|
|
}
|
|
|
|
class RideEvents extends Table {
|
|
IntColumn get id => integer().autoIncrement()();
|
|
IntColumn get rideId => integer().references(Rides, #id)();
|
|
DateTimeColumn get timestamp => dateTime()();
|
|
TextColumn get eventType => text()(); // e.g. "Hard Braking", "Extreme Corner"
|
|
RealColumn get value => real()();
|
|
RealColumn get latitude => real().nullable()();
|
|
RealColumn get longitude => real().nullable()();
|
|
}
|
|
|
|
class PerformanceRuns extends Table {
|
|
IntColumn get id => integer().autoIncrement()();
|
|
IntColumn get rideId => integer().references(Rides, #id).nullable()();
|
|
TextColumn get type => text()(); // "0-60" or "0-100"
|
|
RealColumn get timeMs => real()();
|
|
RealColumn get topSpeedReached => real()();
|
|
DateTimeColumn get timestamp => dateTime()();
|
|
}
|