summaryrefslogtreecommitdiff
path: root/lib/database/helper.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/database/helper.dart')
-rw-r--r--lib/database/helper.dart72
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/database/helper.dart b/lib/database/helper.dart
new file mode 100644
index 0000000..a1f672d
--- /dev/null
+++ b/lib/database/helper.dart
@@ -0,0 +1,72 @@
+import 'dart:io';
+
+// ignore: depend_on_referenced_packages
+import 'package:path/path.dart';
+import 'package:path_provider/path_provider.dart';
+import 'package:pmsna1/models/post.dart';
+import 'package:sqflite/sqflite.dart';
+
+class DatabaseHelper {
+ static const dbName = "tecstagram.sql";
+ static const dbVersion = 1;
+
+ static Database? _database;
+
+ static Future<Database> _initDatabase() async {
+ String dir = Platform.isIOS
+ ? (await getLibraryDirectory()).path
+ : await getDatabasesPath();
+ String dbDir = join(dir, dbName);
+ _database = await openDatabase(
+ dbDir,
+ version: dbVersion,
+ onConfigure: _onConfigure,
+ );
+ return _database!;
+ }
+
+ Future<Database> get database async => _database ?? await _initDatabase();
+
+ static void _onConfigure(Database db) {
+ db.execute("""CREATE TABLE posts (
+ id INTEGER PRIMARY KEY,
+ description VARCHAR(500),
+ date DATE,
+);""");
+ }
+
+ Future<int> insert(String table, Map<String, dynamic> data) async {
+ Database conn = await database;
+ return conn.insert(table, data);
+ }
+
+ Future<int> update<T>(
+ String table, Map<String, dynamic> data, String columnId, T id) async {
+ Database conn = await database;
+ return conn.update(
+ table,
+ data,
+ where: "$columnId = ?",
+ whereArgs: [id],
+ );
+ }
+
+ Future<int> delete<T>(String table, String columnId, T id) async {
+ Database conn = await database;
+ return conn.delete(
+ table,
+ where: "$columnId = ?",
+ whereArgs: [id],
+ );
+ }
+
+ /*
+ * Post specific functions
+ */
+
+ Future<List<Post>> getAllPost() async {
+ Database conn = await database;
+ List<Map<String, Object?>> result = await conn.query("posts");
+ return result.map((post) => Post.fromMap(post)).toList();
+ }
+}