Files

129 lines
3.6 KiB
Dart
Raw Permalink Normal View History

2026-09-12 11:22:07 +05:30
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<Database> get database async {
if (_database != null) {
print('get database ... $_database');
return _database!;
}
_database = await initDatabase();
return _database!;
}
Future<Database> 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<void> _createDatabaseTables(Database db) async {
tablequery.createOtherTable(db);
}
// create other table
// Future<void> _createOtherTable(Database db) async {
// _createTable(db, 'research_status', 'status_name');
// }
// Future<void> _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<bool> _isTableExists(Database db, String tableName) async {
// var result = await db.rawQuery(
// 'SELECT * FROM sqlite_master WHERE type = ? AND name = ?',
// ['table', tableName],
// );
// return result.isNotEmpty;
// }
}