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 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 get primaryKey => {key}; }