diff options
Diffstat (limited to 'lib/database/helper.dart')
-rw-r--r-- | lib/database/helper.dart | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/database/helper.dart b/lib/database/helper.dart index da2d199..54e415c 100644 --- a/lib/database/helper.dart +++ b/lib/database/helper.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:pmsna1/models/event.dart'; +import 'package:pmsna1/models/popular.dart'; import 'package:pmsna1/models/post.dart'; import 'package:sqflite/sqflite.dart'; @@ -47,6 +48,14 @@ class DatabaseHelper { date DATE NOT NULL, completed INT DEFAULT 0 );"""); + + await db.execute("""CREATE TABLE IF NOT EXISTS favorites ( + id INT PRIMARY KEY, + title VARCHAR(128), + posterPath VARCHAR(128), + backdropPath VARCHAR(128), + overview TEXT +);"""); } Future<int> insert(String table, Map<String, dynamic> data) async { @@ -92,4 +101,33 @@ class DatabaseHelper { List<Map<String, Object?>> result = await conn.query("events"); return result.map((event) => Event.fromMap(event)).toList(); } + + /* + * Favorite specific functions + */ + + Future<List<Popular>> getAllFavorites() async { + Database conn = await database; + List<Map<String, Object?>> result = await conn.query("favorites"); + return result.map((p) { + Popular popular = Popular.fromDb(p); + popular.hasFavorite = true; + return popular; + }).toList(); + } + + Future<bool> hasFavorite(int id) async { + Database conn = await database; + List result = + await conn.query("favorites", where: "id = ?", whereArgs: [id]); + return result.isNotEmpty; + } + + Future<int> favoritePopular(Popular popular) async { + return insert('favorites', popular.toDb()); + } + + Future<int> unfavoritePopular(Popular popular) async { + return delete('favorites', 'id', popular.id); + } } |