Files
rog_app/lib/utils/database_gps.dart
2023-10-31 14:12:48 +05:30

73 lines
2.1 KiB
Dart

import 'dart:io';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:rogapp/model/gps_data.dart';
import 'package:sqflite/sqflite.dart';
class GpsDatabaseHelper {
GpsDatabaseHelper._privateConstructor();
static final GpsDatabaseHelper instance =
GpsDatabaseHelper._privateConstructor();
static Database? _database;
Future<Database> get database async => _database ??= await _initDatabase();
Future<Database> _initDatabase() async {
Directory documentDirectory = await getApplicationDocumentsDirectory();
String path = join(documentDirectory.path, 'rog.db');
// return await openDatabase(
// path,
// version: 1,
// onCreate: _onCreate,
// );
return openDatabase(
join(
await getDatabasesPath(),
'gps.db',
),
version: 1,
onCreate: _onCreate);
}
Future _onCreate(Database db, int version) async {
await db.execute('''
CREATE TABLE gps(
id INTEGER PRIMARY KEY AUTOINCREMENT,
team_name TEXT,
event_code TEXT,
lat REAL,
lon REAL,
created_at INTEGER
)
''');
}
Future<int> insertGps(GpsData gps) async {
Database db = await instance.database;
int? nextOrder =
Sqflite.firstIntValue(await db.rawQuery('SELECT MAX(id) FROM gps'));
nextOrder = nextOrder ?? 0;
nextOrder = nextOrder + 1;
gps.id = nextOrder;
print("---- insering ${gps.toMap()}");
int res = await db.insert(
'gps',
gps.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
//print("------ database helper insert $res-----------::::::::");
return res;
}
Future<List<GpsData>> getGPSData(String team_name, String event_code) async {
Database db = await instance.database;
var gpss = await db.query('gps',
where: "team_name = ? and event_code = ?",
whereArgs: [team_name, event_code],
orderBy: 'created_at');
List<GpsData> gpsDatas =
gpss.isNotEmpty ? gpss.map((e) => GpsData.fromMap(e)).toList() : [];
print("--------- db list $gpsDatas");
return gpsDatas;
}
}