Created
December 5, 2019 15:05
-
-
Save fabiojansenbr/684bf34f5f4e4d07de21daff4a350261 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:io'; | |
import 'package:api_to_sqlite_flutter/src/models/employee_model.dart'; | |
import 'package:path/path.dart'; | |
import 'package:path_provider/path_provider.dart'; | |
import 'package:sqflite/sqflite.dart'; | |
class DBProvider { | |
static Database _database; | |
static final DBProvider db = DBProvider._(); | |
DBProvider._(); | |
Future<Database> get database async { | |
// If database exists, return database | |
if (_database != null) return _database; | |
// If database don't exists, create one | |
_database = await initDB(); | |
return _database; | |
} | |
// Create the database and the Employee table | |
initDB() async { | |
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |
final path = join(documentsDirectory.path, 'employee_manager.db'); | |
return await openDatabase(path, version: 1, onOpen: (db) {}, | |
onCreate: (Database db, int version) async { | |
await db.execute('CREATE TABLE Employee(' | |
'id INTEGER PRIMARY KEY,' | |
'email TEXT,' | |
'firstName TEXT,' | |
'lastName TEXT,' | |
'avatar TEXT' | |
')'); | |
}); | |
} | |
// Insert employee on database | |
createEmployee(Employee newEmployee) async { | |
await deleteAllEmployees(); | |
final db = await database; | |
final res = await db.insert('Employee', newEmployee.toJson()); | |
return res; | |
} | |
// Delete all employees | |
Future<int> deleteAllEmployees() async { | |
final db = await database; | |
final res = await db.rawDelete('DELETE FROM Employee'); | |
return res; | |
} | |
Future<List<Employee>> getAllEmployees() async { | |
final db = await database; | |
final res = await db.rawQuery("SELECT * FROM EMPLOYEE"); | |
List<Employee> list = | |
res.isNotEmpty ? res.map((c) => Employee.fromJson(c)).toList() : []; | |
return list; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment