feat(session): ajout du sélecteur de date et persistance dans l'historique de tir
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'dart:io';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:path/path.dart';
|
||||
import '../models/session.dart';
|
||||
@@ -123,10 +124,10 @@ class DatabaseHelper {
|
||||
Future<void> _onUpgrade(Database db, int oldVersion, int newVersion) async {
|
||||
if (oldVersion < 2) {
|
||||
// Migration from single-target sessions to multi-target sessions
|
||||
|
||||
|
||||
// 1. Rename existing sessions table to a temporary name
|
||||
await db.execute('ALTER TABLE ${AppConstants.sessionsTable} RENAME TO sessions_old');
|
||||
|
||||
|
||||
// 2. Create the new sessions table
|
||||
await db.execute('''
|
||||
CREATE TABLE ${AppConstants.sessionsTable} (
|
||||
@@ -220,7 +221,7 @@ class DatabaseHelper {
|
||||
// 6. Cleanup
|
||||
await db.execute('DROP TABLE sessions_old');
|
||||
await db.execute('DROP TABLE shots_old');
|
||||
|
||||
|
||||
// 7. Re-create indexes
|
||||
await db.execute('''
|
||||
CREATE INDEX idx_target_analyses_session_id ON ${AppConstants.targetAnalysesTable}(session_id)
|
||||
@@ -285,9 +286,14 @@ class DatabaseHelper {
|
||||
Future<int> insertSession(Session session) async {
|
||||
final db = await database;
|
||||
return await db.transaction((txn) async {
|
||||
// INTERCEPTION ET FIX DE LA DATE ICI :
|
||||
// On extrait la map générée et on force la colonne created_at avec la vraie date de l'objet
|
||||
final Map<String, dynamic> sessionMap = Map.from(session.toMap());
|
||||
sessionMap['created_at'] = session.createdAt.toIso8601String();
|
||||
|
||||
await txn.insert(
|
||||
AppConstants.sessionsTable,
|
||||
session.toMap(),
|
||||
sessionMap, // On utilise notre map corrigée au lieu de session.toMap() direct !
|
||||
conflictAlgorithm: ConflictAlgorithm.replace,
|
||||
);
|
||||
|
||||
@@ -447,7 +453,7 @@ class DatabaseHelper {
|
||||
|
||||
Future<int> updateWeapon(Weapon weapon) async {
|
||||
final db = await database;
|
||||
|
||||
|
||||
// Start a transaction to ensure both updates succeed
|
||||
return await db.transaction((txn) async {
|
||||
// 1. Update weapon in armory
|
||||
@@ -472,7 +478,7 @@ class DatabaseHelper {
|
||||
|
||||
Future<int> deleteWeapon(String id) async {
|
||||
final db = await database;
|
||||
|
||||
|
||||
return await db.transaction((txn) async {
|
||||
// 1. Unlink sessions from this weapon but KEEP the name (gravé à jamais)
|
||||
await txn.update(
|
||||
@@ -538,4 +544,4 @@ class DatabaseHelper {
|
||||
await db.close();
|
||||
_database = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user