diff options
Diffstat (limited to 'lib/data/database_helper.dart')
-rw-r--r-- | lib/data/database_helper.dart | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/data/database_helper.dart b/lib/data/database_helper.dart new file mode 100644 index 0000000..da65dcc --- /dev/null +++ b/lib/data/database_helper.dart @@ -0,0 +1,54 @@ +import 'dart:async'; +import 'dart:io' as io; + +import 'package:path/path.dart'; +import 'package:beam_messenger/models/user.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:path_provider/path_provider.dart'; + +class DatabaseHelper { + static final DatabaseHelper _instance = new DatabaseHelper.internal(); + factory DatabaseHelper() => _instance; + + static Database _db; + + Future<Database> get db async { + if (_db != null) return _db; + _db = await initDb(); + return _db; + } + + DatabaseHelper.internal(); + + initDb() async { + io.Directory documentsDirectory = await getApplicationDocumentsDirectory(); + String path = join(documentsDirectory.path, "main.db"); + var theDb = await openDatabase(path, version: 1, onCreate: _onCreate); + return theDb; + } + + void _onCreate(Database db, int version) async { + // When creating the db, create the table + await db.execute( + "CREATE TABLE User(id INTEGER PRIMARY KEY, email TEXT, password TEXT)"); + print("Created tables"); + } + + Future<int> saveUser(User user) async { + var dbClient = await db; + int res = await dbClient.insert("User", user.toMap()); + return res; + } + + Future<int> deleteUsers() async { + var dbClient = await db; + int res = await dbClient.delete("User"); + return res; + } + + Future<bool> isLoggedIn() async { + var dbClient = await db; + var res = await dbClient.query("User"); + return res.length > 0 ? true : false; + } +} |