maps/mobile/lib/core/database/tables.dart
2026-03-30 09:22:16 +02:00

53 lines
1.9 KiB
Dart

import 'package:drift/drift.dart';
/// Search history table: stores the last 50 search queries.
class SearchHistory extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get query => text()();
RealColumn get latitude => real().nullable()();
RealColumn get longitude => real().nullable()();
IntColumn get timestamp => integer()(); // Unix epoch seconds
}
/// Favorites table: stores user-saved places.
class Favorites extends Table {
IntColumn get id => integer().autoIncrement()();
IntColumn get osmId => integer().nullable()();
TextColumn get osmType => text().nullable()(); // 'N', 'W', or 'R'
TextColumn get name => text()();
TextColumn get note => text().nullable()();
TextColumn get groupName =>
text().withDefault(const Constant('Favorites'))();
RealColumn get latitude => real()();
RealColumn get longitude => real()();
TextColumn get addressJson => text().nullable()(); // JSON-encoded address
IntColumn get createdAt => integer()(); // Unix epoch seconds
IntColumn get updatedAt => integer()(); // Unix epoch seconds
}
/// Offline regions table: tracks downloaded offline regions on the device.
class OfflineRegions extends Table {
TextColumn get id => text()();
TextColumn get name => text()();
RealColumn get minLat => real()();
RealColumn get minLon => real()();
RealColumn get maxLat => real()();
RealColumn get maxLon => real()();
IntColumn get tilesSizeBytes => integer()();
IntColumn get routingSizeBytes => integer()();
IntColumn get poisSizeBytes => integer()();
IntColumn get downloadedAt => integer()(); // Unix epoch seconds
IntColumn get lastUpdated => integer()(); // Unix epoch seconds (from backend)
@override
Set<Column> get primaryKey => {id};
}
/// Settings table: key-value storage for user preferences.
class Settings extends Table {
TextColumn get key => text()();
TextColumn get value => text()();
@override
Set<Column> get primaryKey => {key};
}