diff options
Diffstat (limited to 'lib/database/helper.dart')
-rw-r--r-- | lib/database/helper.dart | 72 |
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(); + } +} |