mirror of
https://bitbucket.org/myhomie/myhomie_app.git
synced 2025-12-06 09:01:20 +00:00
108 lines
3.0 KiB
Dart
108 lines
3.0 KiB
Dart
|
|
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<Database> 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<int> 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<void> 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<List<Map<String, dynamic>>> queryAllRows() async {
|
|
Database db = await instance.database;
|
|
var res = await db.query(table, orderBy: "$columnUserId DESC");
|
|
return res;
|
|
}
|
|
|
|
Future<int> delete(String userId) async {
|
|
Database db = await instance.database;
|
|
return await db.delete(table, where: '$columnUserId = ?', whereArgs: [userId]);
|
|
}
|
|
|
|
Future<List<Map<String, Object?>>> clearTable() async {
|
|
Database db = await instance.database;
|
|
return await db.rawQuery("DELETE FROM $table");
|
|
}
|
|
|
|
Future<HomieAppContext?> 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;
|
|
}
|
|
} |