import 'dart:io'; // ignore: depend_on_referenced_packages import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:pmsna1/models/event.dart'; import 'package:pmsna1/models/post.dart'; import 'package:sqflite/sqflite.dart'; class DatabaseHelper { static const dbName = "tecstagram.sql"; static const dbVersion = 2; static Database? _database; static Future _initDatabase() async { String dir = Platform.isIOS ? (await getLibraryDirectory()).path : await getDatabasesPath(); String dbDir = join(dir, dbName); _database = await openDatabase( dbDir, version: dbVersion, onCreate: _onCreate, onUpgrade: ((db, oldVersion, newVersion) { _onCreate(db, newVersion); }), ); return _database!; } Future get database async => _database ?? await _initDatabase(); static void _onCreate(Database db, int version) async { await db.execute("""CREATE TABLE IF NOT EXISTS posts ( id INTEGER PRIMARY KEY, description VARCHAR(500) NOT NULL, date DATE NOT NULL );"""); await db.execute("""CREATE TABLE IF NOT EXISTS events ( id INTEGER PRIMARY KEY, description VARCHAR(500), date DATE NOT NULL, completed INT DEFAULT 0 );"""); } Future insert(String table, Map data) async { Database conn = await database; return conn.insert(table, data); } Future update( String table, Map data, String columnId, T id) async { Database conn = await database; return conn.update( table, data, where: "$columnId = ?", whereArgs: [id], ); } Future delete(String table, String columnId, T id) async { Database conn = await database; return conn.delete( table, where: "$columnId = ?", whereArgs: [id], ); } /* * Post specific functions */ Future> getAllPost() async { Database conn = await database; List> result = await conn.query("posts"); return result.map((post) => Post.fromMap(post)).toList(); } /* * Event specific functions */ Future> getAllEvent() async { Database conn = await database; List> result = await conn.query("events"); return result.map((event) => Event.fromMap(event)).toList(); } }