Skip to content

Instantly share code, notes, and snippets.

@fabiojansenbr
Created December 5, 2019 15:05
Show Gist options
  • Save fabiojansenbr/684bf34f5f4e4d07de21daff4a350261 to your computer and use it in GitHub Desktop.
Save fabiojansenbr/684bf34f5f4e4d07de21daff4a350261 to your computer and use it in GitHub Desktop.
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