53 lines
1.3 KiB
Dart
53 lines
1.3 KiB
Dart
import 'package:skripsi_getit/data/model/user.dart';
|
|
import 'package:sqflite/sqflite.dart';
|
|
import 'package:path/path.dart';
|
|
|
|
class DatabaseHelper {
|
|
static final DatabaseHelper instance = DatabaseHelper._internal();
|
|
DatabaseHelper._internal();
|
|
|
|
static Database? _database;
|
|
|
|
Future<Database> get database async {
|
|
if (_database != null) return _database!;
|
|
_database = await _initDB();
|
|
return _database!;
|
|
}
|
|
|
|
Future<Database> _initDB() async {
|
|
String path = join(await getDatabasesPath(), 'app_database.db');
|
|
return await openDatabase(
|
|
path,
|
|
version: 1,
|
|
onCreate: (db, version) {
|
|
return db.execute(
|
|
'CREATE TABLE users(id INTEGER PRIMARY KEY, username TEXT, email TEXT, password TEXT)',
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
Future<void> insertUser(User user) async {
|
|
final db = await database;
|
|
await db.insert(
|
|
'users',
|
|
user.toMap(),
|
|
conflictAlgorithm: ConflictAlgorithm.replace,
|
|
);
|
|
}
|
|
|
|
Future<User?> getUser(String email, String password) async {
|
|
final db = await database;
|
|
final maps = await db.query(
|
|
'users',
|
|
where: 'email = ? AND password = ?',
|
|
whereArgs: [email, password],
|
|
);
|
|
|
|
if (maps.isNotEmpty) {
|
|
return User.fromMap(maps.first);
|
|
}
|
|
return null;
|
|
}
|
|
}
|