import 'dart:async'; import 'dart:io'; import 'package:authsec_flutter_hybrid/LocalStorage/TableQuery.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; class DatabaseHelper { DatabaseHelper.internal(); static final DatabaseHelper instance = DatabaseHelper.internal(); TableQuery tablequery = TableQuery(); // factory DatabaseHelper() => instance; static DatabaseHelper? _instance; static Database? _database; DatabaseHelper._privateConstructor(); factory DatabaseHelper() { _instance ??= DatabaseHelper._privateConstructor(); return _instance!; } Future get database async { if (_database != null) { print('get database ... $_database'); return _database!; } _database = await initDatabase(); return _database!; } Future initDatabase() async { try { Directory directory = await getApplicationDocumentsDirectory(); String path = join(directory.path, 'my_database.db'); print('database path is $path'); // final db = await openDatabase('my_database.db'); var openDb = await openDatabase( path, version: 1, onCreate: (db, version) => _createDatabaseTables(db), onUpgrade: (db, int oldversion, int newversion) async { if (oldversion < newversion) { print("Version Upgrade"); } }, ); // Check if the table exists // var tableResult = await openDb.query('sqlite_master', // columns: ['name'], // where: 'type = ? AND name = ?', // whereArgs: ['table', 'company']); // if (tableResult.isEmpty) { // print('Table does not exist'); // } else { // print('table data is $tableResult'); // print('company Table exists'); // } print('open db is...... ${openDb.database}'); return openDb; } catch (e) { print('Error initializing database: $e'); rethrow; // rethrow the error to see the full stack trace } } Future _createDatabaseTables(Database db) async { tablequery.createOtherTable(db); } // create other table // Future _createOtherTable(Database db) async { // _createTable(db, 'research_status', 'status_name'); // } // Future _createTable( // Database db, String tableName, String fieldName) async { // var tableExists = await _isTableExists(db, tableName); // if (!tableExists) { // print('$tableName making.....'); // await db.execute( // ''' // CREATE TABLE $tableName ( // id INTEGER PRIMARY KEY AUTOINCREMENT, // accountId TEXT, // createdAt TEXT, // createdBy TEXT, // updatedAt TEXT, // updatedBy TEXT, // extn1 TEXT, // extn2 TEXT, // extn3 TEXT, // extn4 TEXT, // extn5 TEXT, // extn6 TEXT, // extn7 TEXT, // extn8 TEXT, // extn9 TEXT, // extn10 TEXT, // extn11 TEXT, // extn12 TEXT, // extn13 TEXT, // extn14 TEXT, // extn15 TEXT, // active INTEGER, // description TEXT, // $fieldName TEXT // )'''); // } else { // print('$tableName table exist'); // } // } // Future _isTableExists(Database db, String tableName) async { // var result = await db.rawQuery( // 'SELECT * FROM sqlite_master WHERE type = ? AND name = ?', // ['table', tableName], // ); // return result.isNotEmpty; // } }