Merge remote-tracking branch 'origin/firebase' into dev

This commit is contained in:
grata
2023-09-29 14:50:49 +02:00
4 changed files with 131 additions and 190 deletions

View File

@@ -1,81 +0,0 @@
import '../model/note.dart';
import '../model/promemoria.dart';
import 'database.dart';
class Controller {
NoteDatabase database = NoteDatabase.instance;
Future<List<Note>> getAllNote() async {
final db = await database.database;
var notes = await db.query(noteTable);
List<Note> noteList = notes.map((e) => Note.fromJson(e)).toList();
return noteList;
}
Future<List<Promemoria>> getAllPromemoria() async {
final db = await database.database;
var promemorias = await db.query(promemoriaTable);
List<Promemoria> promemoriaList =
promemorias.map((e) => Promemoria.fromJson(e)).toList();
return promemoriaList;
}
Future<Note> getNoteById(int id) async {
final db = await database.database;
var note = await db.query(noteTable, where: 'id = ?', whereArgs: [id]);
return Note.fromJson(note.first);
}
Future<Promemoria> getPromemoriaById(int id) async {
final db = await database.database;
var promemoria =
await db.query(promemoriaTable, where: 'id = ?', whereArgs: [id]);
return Promemoria.fromJson(promemoria.first);
}
//add note
void addNote(Note note) async {
final db = await database.database;
await db.execute('''
INSERT INTO note (
title,
creationDate,
lastModificationDate,
arrayPromemoria,
description
) VALUES (
'${note.title}',
'${note.creationDate}',
'${note.lastModificationDate}',
'${note.arrayPromemoria}',
'${note.description}'
)
''');
}
//add Promemoria
void addPromemoria(Promemoria promemoria) async {
final db = await database.database;
await db.execute('''
INSERT INTO promemoria (
title,
creationDate,
lastModificationDate,
expirationDate,
arrayPromemoria,
description,
priority,
color
) VALUES (
'${promemoria.title}',
'${promemoria.creationDate}',
'${promemoria.lastModificationDate}',
'${promemoria.expirationDate}',
'${promemoria.arrayPromemoria}',
'${promemoria.description}',
'${promemoria.priority}',
'${promemoria.color}'
)
''');
}
}

View File

@@ -1,11 +1,13 @@
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../model/note.dart';
import 'FireDb.dart';
import 'package:progetto_m335_flutter/model/promemoria.dart'; import 'package:progetto_m335_flutter/model/promemoria.dart';
class NoteDatabase { class NoteDatabase {
static final NoteDatabase instance = NoteDatabase._init(); static final NoteDatabase instance = NoteDatabase._init();
static Database? _database; static Database? _database;
FireDb fireDb = FireDb();
NoteDatabase._init(); NoteDatabase._init();
@@ -24,114 +26,31 @@ class NoteDatabase {
} }
Future _createDB(Database database, int version) async { Future _createDB(Database database, int version) async {
await database.execute('''CREATE TABLE promemoria ( await database.execute('''CREATE TABLE promemoria (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL, title TEXT NOT NULL,
creationDate TEXT NOT NULL, creationDate TEXT NOT NULL,
lastModificationDate TEXT, lastModificationDate TEXT,
expirationDate TEXT, expirationDate TEXT,
arrayPromemoria TEXT, arrayPromemoria TEXT,
description TEXT, description TEXT,
priority TEXT, priority TEXT,
color TEXT color TEXT
); );
'''); ''');
await database.execute('''CREATE TABLE note ( await database.execute('''CREATE TABLE note (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL, title TEXT NOT NULL,
creationDate TEXT NOT NULL, creationDate TEXT NOT NULL,
lastModificationDate TEXT, lastModificationDate TEXT,
arrayPromemoria TEXT, arrayPromemoria TEXT,
description TEXT description TEXT
); );
'''); ''');
print("database created"); print("database created");
await fillDemoData(database, version); getDataFromFirebase(database, version);
}
Future fillDemoData(Database database, int version) async {
// Add fake categories
await database.execute('''
INSERT INTO note (
title,
creationDate,
lastModificationDate,
arrayPromemoria,
description
) VALUES (
'Nota 2',
'2023-09-28',
'2023-09-28',
'1,1',
'Questo è un esempio di nota 2.'
)
''');
await database.execute('''
INSERT INTO note (
title,
creationDate,
lastModificationDate,
arrayPromemoria,
description
) VALUES (
'Nota 2',
'2023-09-28',
'2023-09-28',
'1,1',
'Questo è un esempio di nota 2.'
)
''');
await database.execute('''
INSERT INTO promemoria (
title,
creationDate,
lastModificationDate,
expirationDate,
arrayPromemoria,
description,
priority,
color
) VALUES (
'Promemoria 1',
'2023-09-27',
'2023-09-27',
'2023-10-05',
'2,1',
'Questo è un esempio di promemoria 1.',
'Alta',
'Rosso'
)
''');
// Add fake budgets
await database.execute('''
INSERT INTO promemoria (
title,
creationDate,
lastModificationDate,
expirationDate,
arrayPromemoria,
description,
priority,
color
) VALUES (
'Promemoria 2',
'2023-09-28',
'2023-09-28',
'2023-10-10',
'1,1',
'Questo è un esempio di promemoria 2.',
'Media',
'Verde'
)
''');
print("Demo data inserted");
} }
Future<List<Map>> selectAllPromemoria() async { Future<List<Map>> selectAllPromemoria() async {
@@ -142,6 +61,108 @@ class NoteDatabase {
return maps; return maps;
} }
Future<List<Note>> getAllNote() async {
var notes = await _database?.query(noteTable);
List<Note> noteList = notes!.map((e) => Note.fromJson(e)).toList();
return noteList;
}
Future<List<Promemoria>> getAllPromemoria() async {
var promemorias = await _database?.query(promemoriaTable);
List<Promemoria> promemoriaList =
promemorias!.map((e) => Promemoria.fromJson(e)).toList();
return promemoriaList;
}
Future<Note> getNoteById(int id) async {
var note = await _database?.query(noteTable, where: 'id = ?', whereArgs: [id]);
return Note.fromJson(note!.first);
}
Future<Promemoria> getPromemoriaById(int id) async {
var promemoria =
await _database?.query(promemoriaTable, where: 'id = ?', whereArgs: [id]);
return Promemoria.fromJson(promemoria!.first);
}
//add note
void addNote(Note note) async {
await _database?.execute('''
INSERT INTO note (
title,
creationDate,
lastModificationDate,
arrayPromemoria,
description
) VALUES (
'${note.title}',
'${note.creationDate}',
'${note.lastModificationDate}',
'${note.arrayPromemoria}',
'${note.description}'
)
''');
}
//add Promemoria
void addPromemoria(Promemoria promemoria) async {
await _database?.execute('''
INSERT INTO promemoria (
title,
creationDate,
lastModificationDate,
expirationDate,
arrayPromemoria,
description,
priority,
color
) VALUES (
'${promemoria.title}',
'${promemoria.creationDate}',
'${promemoria.lastModificationDate}',
'${promemoria.expirationDate}',
'${promemoria.arrayPromemoria}',
'${promemoria.description}',
'${promemoria.priority}',
'${promemoria.color}'
)
''');
}
void deleteAll() async {
await _database?.execute('''
DELETE FROM promemoria
''');
await _database?.execute('''
DELETE FROM note
''');
}
void getDataFromFirebase(Database database, int version) async {
this.deleteAll();
var promemorias = await fireDb.readAllPromemoria();
var notes = await fireDb.readAllNotes();
for (var promemoria in promemorias) {
this.addPromemoria(promemoria);
}
for (var note in notes) {
this.addNote(note);
}
}
void syncData() async {
var promemorias = await getAllPromemoria();
var notes = await getAllNote();
await fireDb.deleteAllPromemoria();
await fireDb.deleteAllNotes();
await fireDb.createAllPromemoria(promemorias);
await fireDb.createAllNotes(notes);
}
} }

View File

@@ -2,6 +2,7 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'myApp.dart'; import 'myApp.dart';
Future<void> main() async { Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(); await Firebase.initializeApp();

View File

@@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:progetto_m335_flutter/database/controller.dart';
import 'package:progetto_m335_flutter/database/database.dart'; import 'package:progetto_m335_flutter/database/database.dart';
import 'package:progetto_m335_flutter/model/note.dart'; import 'package:progetto_m335_flutter/model/note.dart';
import 'package:progetto_m335_flutter/model/promemoria.dart'; import 'package:progetto_m335_flutter/model/promemoria.dart';
@@ -15,7 +14,6 @@ class Test extends StatefulWidget {
class _TestState extends State<Test> { class _TestState extends State<Test> {
NoteDatabase noteDatabase = NoteDatabase.instance; NoteDatabase noteDatabase = NoteDatabase.instance;
Controller controller = Controller();
Future<void> _pressed() async { Future<void> _pressed() async {
print("Inserting demo data"); print("Inserting demo data");
@@ -44,21 +42,23 @@ class _TestState extends State<Test> {
"alta", "alta",
"rosso"); "rosso");
controller.addNote(nota); noteDatabase.addNote(nota);
controller.addPromemoria(promemoria); noteDatabase.addPromemoria(promemoria);
final db = await noteDatabase.database; final db = await noteDatabase.database;
print("Printing data"); print("Printing data");
print((await controller.getAllPromemoria()).first); print((await noteDatabase.getAllPromemoria()).first);
print((await controller.getAllNote()).first); print((await noteDatabase.getAllNote()).first);
print("promemoria"); print("promemoria");
print(await db.query(promemoriaTable)); print(await db.query(promemoriaTable));
print("note"); print("note");
print(await db.query(noteTable)); print(await db.query(noteTable));
print("Data printed"); print("Data printed");
print("savedata from database to firebase");
noteDatabase.syncData();
print("data saved");
} }