import 'package:myhomie_app/Models/homieContext.dart'; import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart'; class DatabaseHelper { static final _databaseName = "homie_database.db"; static final _databaseVersion = 1; static final table = 'homieAppContext'; static final columnUserId = 'userId'; static final columnHomeId = 'homeId'; static final columnToken = 'token'; static final columnHost = 'host'; static final columnLanguage = 'language'; DatabaseHelper._privateConstructor(); static final DatabaseHelper instance = DatabaseHelper._privateConstructor(); static Database? _database; Future get database async => _database ??= await _initDatabase(); _initDatabase() async { String path = join(await getDatabasesPath(), _databaseName); return await openDatabase(path, version: _databaseVersion, onCreate: _onCreate); } // SQL code to create the database table Future _onCreate(Database db, int version) async { await db.execute(''' CREATE TABLE $table ( $columnUserId TEXT NOT NULL PRIMARY KEY, $columnHomeId TEXT, $columnHost TEXT NOT NULL, $columnLanguage TEXT NOT NULL, $columnToken TEXT NOT NULL ) '''); } Future insert(HomieAppContext homieAppContext) async { Database db = await instance.database; var test = await instance.getData(); if(test != null) { var res = await db.update(table, homieAppContext.toMap()); return res; } else { var res = await db.insert(table, homieAppContext.toMap()); return res; } } Future update(HomieAppContext homieAppContext) async { // Get a reference to the database. final db = await instance.database; await db.update( 'homieAppContext', homieAppContext.toMap(), where: "$columnHomeId = ?", whereArgs: [homieAppContext.userId], ); } Future>> queryAllRows() async { Database db = await instance.database; var res = await db.query(table, orderBy: "$columnUserId DESC"); return res; } Future delete(String userId) async { Database db = await instance.database; return await db.delete(table, where: '$columnUserId = ?', whereArgs: [userId]); } Future>> clearTable() async { Database db = await instance.database; return await db.rawQuery("DELETE FROM $table"); } Future getData() async { HomieAppContext? homieAppContext; await DatabaseHelper.instance.queryAllRows().then((value) { print("value"); print(value); value.forEach((element) { print("DB - CONTEXT --- "); homieAppContext = HomieAppContext( userId: element["userId"], homeId: element["homeId"], token: element["token"], host: element["host"], language: element["language"] ); }); }).catchError((error) { print(error); }); return homieAppContext; } }