129 lines
3.6 KiB
Dart
129 lines
3.6 KiB
Dart
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;
|
|
// }
|
|
}
|