Created
September 9, 2019 16:04
-
-
Save kleberandrade/f82a02665de692cc08e83405d52caf92 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 'package:emprestimo_objetos/models/stuff.dart'; | |
import 'package:path/path.dart'; | |
import 'package:sqflite/sqflite.dart'; | |
class StuffProvider { | |
static final StuffProvider _instance = StuffProvider.internal(); | |
factory StuffProvider() => _instance; | |
StuffProvider.internal(); | |
Database _db; | |
Future<Database> get db async { | |
if (_db != null) { | |
return _db; | |
} else { | |
_db = await initDb(); | |
return _db; | |
} | |
} | |
Future<Database> initDb() async { | |
final databasePath = await getDatabasesPath(); | |
final path = join(databasePath, "emprestimo_objeto.db"); | |
return openDatabase(path, version: 1, | |
onCreate: (Database db, int newerVersion) async { | |
await db.execute("CREATE TABLE $tableStuff(" | |
"$columnId INTEGER PRIMARY KEY, " | |
"$columnFriendName TEXT, " | |
"$columnFriendPhone TEXT, " | |
"$columnDescription TEXT, " | |
"$columnPicture TEXT, " | |
"$columnDepartureDate TEXT, " | |
"$columnReturnDate TEXT)"); | |
}); | |
} | |
Future<Stuff> save(Stuff stuff) async { | |
Database database = await db; | |
stuff.id = await database.insert(tableStuff, stuff.toMap()); | |
return stuff; | |
} | |
Future<Stuff> getById(int id) async { | |
Database database = await db; | |
List<Map> maps = await database.query(tableStuff, | |
columns: [ | |
'$columnId', | |
'$columnFriendName', | |
'$columnFriendPhone', | |
'$columnDescription', | |
'$columnPicture', | |
'$columnDepartureDate', | |
'$columnReturnDate' | |
], | |
where: '$columnId = ?', | |
whereArgs: [id]); | |
if (maps.length > 0) { | |
return Stuff.fromMap(maps.first); | |
} else { | |
return null; | |
} | |
} | |
Future<int> delete(int id) async { | |
Database database = await db; | |
return await database | |
.delete(tableStuff, where: '$columnId = ?', whereArgs: [id]); | |
} | |
Future<int> update(Stuff stuff) async { | |
Database database = await db; | |
return await database.update(tableStuff, stuff.toMap(), | |
where: '$columnId = ?', whereArgs: [stuff.id]); | |
} | |
Future<List<Stuff>> getAll() async { | |
Database database = await db; | |
List listMap = await database.rawQuery("SELECT * FROM $tableStuff"); | |
List<Stuff> stuffList = listMap.map((x) => Stuff.fromMap(x)).toList(); | |
return stuffList; | |
} | |
Future<List<Stuff>> getAllReturnedStuffs() async { | |
List<Stuff> stuffList = await getAll(); | |
return stuffList.where((x) => x.stuffReturnDate != null).toList(); | |
} | |
Future<List<Stuff>> getAllDepartureStuffs() async { | |
List<Stuff> stuffList = await getAll(); | |
return stuffList.where((x) => x.stuffReturnDate == null).toList(); | |
} | |
Future<int> getCount() async { | |
Database database = await db; | |
return Sqflite.firstIntValue( | |
await database.rawQuery("SELECT COUNT(*) FROM $tableStuff")); | |
} | |
Future close() async { | |
Database database = await db; | |
database.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment