Terepbejárás geometriák szerkesztése: kontrollpontok és tulajdonságok.
This commit is contained in:
@@ -3,6 +3,8 @@ import 'dart:io';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:terepi_seged/enums/note_type.dart';
|
||||
import 'package:terepi_seged/models/note_item.dart';
|
||||
import 'package:terepi_seged/models/track.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
import '../models/project.dart';
|
||||
@@ -116,7 +118,7 @@ class AppDatabase {
|
||||
await db.execute('''
|
||||
CREATE TABLE IF NOT EXISTS note_items (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
||||
project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE,
|
||||
type TEXT NOT NULL,
|
||||
points_json TEXT NOT NULL,
|
||||
color TEXT NOT NULL DEFAULT '#185FA5',
|
||||
@@ -381,4 +383,80 @@ class AppDatabase {
|
||||
whereArgs: ['synced'],
|
||||
);
|
||||
}
|
||||
|
||||
// ------------------- Terepbejárás pontok, vonalak, területek
|
||||
|
||||
/// Elem mentése - visszaadja a kapott AQLite id-t
|
||||
Future<int> insertNoteItem(NoteItem item) async {
|
||||
final db = await database;
|
||||
return db.insert('note_items', item.toMap());
|
||||
}
|
||||
|
||||
/// Elem frissítése (szín, label, koordináták módosítása után).
|
||||
Future<void> updateNoteItem(NoteItem item) async {
|
||||
final db = await database;
|
||||
await db.update(
|
||||
'note_items',
|
||||
item.toMap(),
|
||||
where: 'id = ?',
|
||||
whereArgs: [item.id],
|
||||
);
|
||||
}
|
||||
|
||||
/// Egy elem törlése.
|
||||
Future<void> deleteNoteItem(int id) async {
|
||||
final db = await database;
|
||||
await db.delete(
|
||||
'note_items',
|
||||
where: 'id = ?',
|
||||
whereArgs: [id],
|
||||
);
|
||||
}
|
||||
|
||||
/// Projekt összes eleme — opcionálisan típus szerint szűrve.
|
||||
Future<List<NoteItem>> listNoteItems(int? projectId, {NoteType? type}) async {
|
||||
final db = await database;
|
||||
|
||||
String? where;
|
||||
List<Object?> whereArgs = [];
|
||||
|
||||
if (projectId != null) {
|
||||
where = type != null ? 'project_id = ? AND type = ?' : 'project_id = ?';
|
||||
whereArgs = type != null ? [projectId, type.name] : [projectId];
|
||||
} else {
|
||||
// Projekt nélküli elemek
|
||||
where = type != null ? 'type = ?' : null;
|
||||
whereArgs = type != null ? [type.name] : [];
|
||||
}
|
||||
|
||||
final rows = await db.query(
|
||||
'note_items',
|
||||
where: where,
|
||||
whereArgs: whereArgs,
|
||||
orderBy: 'created_at ASC',
|
||||
);
|
||||
return rows.map(NoteItem.fromMap).toList();
|
||||
}
|
||||
|
||||
/// Egyetlen elem lekérése id alapján.
|
||||
Future<NoteItem?> getNoteItem(int id) async {
|
||||
final db = await database;
|
||||
final rows = await db.query(
|
||||
'note_items',
|
||||
where: 'id = ?',
|
||||
whereArgs: [id],
|
||||
limit: 1,
|
||||
);
|
||||
return rows.isEmpty ? null : NoteItem.fromMap(rows.first);
|
||||
}
|
||||
|
||||
/// Projekt összes elemének törlése.
|
||||
Future<void> deleteAllNoteItems(int projectId) async {
|
||||
final db = await database;
|
||||
await db.delete(
|
||||
'note_items',
|
||||
where: 'project_id = ?',
|
||||
whereArgs: [projectId],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user