Adding base project of flutter-hybrid
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
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;
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
|
||||
|
||||
|
||||
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
|
||||
class TableQuery {
|
||||
Future<void> createOtherTable(Database db) async {
|
||||
// Table Query
|
||||
_createGauravt2(db, 'Gauravt2');
|
||||
|
||||
|
||||
_createGauravtest1(db, 'Gauravtest1');
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Table Query Data
|
||||
|
||||
Future<void> _createGauravt2(Database db, String tableName) 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,
|
||||
phone TEXT,
|
||||
nme TEXT,
|
||||
imageupload TEXT,
|
||||
|
||||
)''');
|
||||
} else {
|
||||
print('$tableName table exist');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Future<void> _createGauravtest1(Database db, String tableName) 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,
|
||||
college TEXT,
|
||||
Name 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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||
|
||||
import 'databasehelper.dart';
|
||||
|
||||
class UniController {
|
||||
final conn = DatabaseHelper.instance;
|
||||
|
||||
// get entity
|
||||
Future<List<Map<String, dynamic>>> getentities(String tableName) async {
|
||||
Database db = await conn.database;
|
||||
return await db.query(tableName);
|
||||
}
|
||||
|
||||
// insert
|
||||
Future<int> insertEntity(
|
||||
Map<String, dynamic> entity, String tableName) async {
|
||||
Database db = await conn.database;
|
||||
|
||||
// entity['active'] = entity['active'] ? 1 : 0;
|
||||
|
||||
// Insert data
|
||||
var entityId = await db.insert(tableName, entity);
|
||||
if (entityId != null && entityId > 0) {
|
||||
print('$tableName Id data is inserted. $tableName Id ID: $entityId');
|
||||
} else {
|
||||
print('Failed to insert $tableName.');
|
||||
}
|
||||
|
||||
return entityId;
|
||||
}
|
||||
|
||||
// insert multiple table
|
||||
Future<void> insertEntities(
|
||||
List<Map<String, dynamic>> entities, String tableName) async {
|
||||
Database db = await conn.database;
|
||||
Batch batch = db.batch();
|
||||
|
||||
print('multiple entity is com is $entities');
|
||||
|
||||
for (var entity in entities) {
|
||||
insertEntity(entity, tableName);
|
||||
}
|
||||
|
||||
await batch.commit();
|
||||
}
|
||||
|
||||
// update Entity
|
||||
Future<int> update(String tableName, int entityId,
|
||||
Map<String, dynamic> updatedEntity) async {
|
||||
Database db = await conn.database;
|
||||
|
||||
int rowsAffected = await db.update(tableName, updatedEntity,
|
||||
where: 'id = ?', whereArgs: [entityId]);
|
||||
|
||||
if (rowsAffected > 0) {
|
||||
print('$tableName data updated successfully.');
|
||||
} else {
|
||||
print('Failed to update $tableName data.');
|
||||
}
|
||||
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
// Deleting entity
|
||||
|
||||
Future<int> delete(String tableName, int entityId) async {
|
||||
Database db = await conn.database;
|
||||
|
||||
// Delete the company
|
||||
int rowsAffected =
|
||||
await db.delete(tableName, where: 'id = ?', whereArgs: [entityId]);
|
||||
|
||||
if (rowsAffected > 0) {
|
||||
print('$tableName data deleted successfully.');
|
||||
} else {
|
||||
print('Failed to delete comp $tableName any data.');
|
||||
}
|
||||
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
// get count
|
||||
Future<int> getDataCount(String tableNmae) async {
|
||||
Database db = await conn.database;
|
||||
|
||||
// Get the count of rows in the company table
|
||||
int count = Sqflite.firstIntValue(
|
||||
await db.rawQuery('SELECT COUNT(*) FROM $tableNmae'))!
|
||||
.toInt();
|
||||
|
||||
print('Number of $tableNmae in the table: $count');
|
||||
|
||||
return count;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
// import 'dart:io';
|
||||
|
||||
// import 'package:connectivity/connectivity.dart';
|
||||
// import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||
// import '../../providers/token_manager.dart';
|
||||
// import '../../resources/api_constants.dart';
|
||||
|
||||
// import 'UniController.dart';
|
||||
// import 'companycontroller.dart';
|
||||
// import 'databasehelper.dart';
|
||||
|
||||
// class LocalSyncronizationData {
|
||||
// final String baseUrl = ApiConstants.baseUrl;
|
||||
|
||||
// final UniController uniController = UniController();
|
||||
|
||||
// final companycontroller companyController = companycontroller();
|
||||
// final conn = DatabaseHelper.instance;
|
||||
|
||||
// static Future<bool> isInternet() async {
|
||||
// var connectivityResult = await (Connectivity().checkConnectivity());
|
||||
// if (connectivityResult == ConnectivityResult.mobile) {
|
||||
// final result = await InternetAddress.lookup('www.google.com');
|
||||
// if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
|
||||
// print('mobile network connected');
|
||||
// return true;
|
||||
// } else {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// // if (await DataConnectionChecker().hasConnection) {
|
||||
// // print("Mobile data detected & internet connection confirmed.");
|
||||
// // return true;
|
||||
// // }else{
|
||||
// // print('No internet :( Reason:');
|
||||
// // return false;
|
||||
// // }
|
||||
// } else if (connectivityResult == ConnectivityResult.wifi) {
|
||||
// final result = await InternetAddress.lookup('www.google.com');
|
||||
// if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
|
||||
// print('wifi connected');
|
||||
// return true;
|
||||
// } else {
|
||||
// print('wifi not connected');
|
||||
|
||||
// return false;
|
||||
// }
|
||||
// } else {
|
||||
// print(
|
||||
// "Neither mobile data or WIFI detected, not internet connection found.");
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Future saveCompanyToMysql() async {
|
||||
// // Database db = await conn.database;
|
||||
// // final token = await TokenManager.getToken();
|
||||
|
||||
// // print('company db is $db');
|
||||
// // final List<Map<String, dynamic>> localEntities =
|
||||
// // await db.query('company', orderBy: 'id DESC');
|
||||
|
||||
// // if (localEntities.isNotEmpty) {
|
||||
// // final entities = (localEntities).cast<Map<String, dynamic>>();
|
||||
|
||||
// // for (var element in entities) {
|
||||
// // companyService.createEntity1(token!, element);
|
||||
// // }
|
||||
// // }
|
||||
// // }
|
||||
|
||||
// // for research status sync
|
||||
// Future fetchResearchStatusData() async {
|
||||
// List userList = [];
|
||||
// Database db = await conn.database;
|
||||
|
||||
// try {
|
||||
// final List<Map<String, dynamic>> localEntities =
|
||||
// await db.query('research_status', orderBy: 'id DESC');
|
||||
|
||||
// if (localEntities.isNotEmpty) {
|
||||
// final entities = (localEntities).cast<Map<String, dynamic>>();
|
||||
|
||||
// for (var element in entities) {
|
||||
// userList.add(element);
|
||||
// }
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print(e.toString());
|
||||
// }
|
||||
// return userList;
|
||||
// }
|
||||
|
||||
// Future<List<Map<String, dynamic>>> fetchAllInfo() async {
|
||||
// Database db = await conn.database;
|
||||
// List<Map<String, dynamic>> researchList = [];
|
||||
// try {
|
||||
// final maps = await db.query('research_status');
|
||||
// for (var item in maps!) {
|
||||
// researchList.add(item);
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print(e.toString());
|
||||
// }
|
||||
// return researchList;
|
||||
// }
|
||||
|
||||
// Future saveReserachToMysql(List researchList) async {
|
||||
// final token = await TokenManager.getToken();
|
||||
|
||||
// for (var i = 0; i < researchList.length; i++) {
|
||||
// Map<String, dynamic> data = {
|
||||
// "id": researchList[i]['id'].toString(),
|
||||
// "status_name": researchList[i]['status_name'],
|
||||
// "description": researchList[i]['description'],
|
||||
// "active": researchList[i]['active'],
|
||||
// };
|
||||
// final response = researchService.createEntity1(token!, data);
|
||||
|
||||
// print('eserach res is $response');
|
||||
// }
|
||||
// }
|
||||
|
||||
// // from online to offline for research status
|
||||
|
||||
// Future fetchResearchStatusDataOnline() async {
|
||||
// List userList = [];
|
||||
// Database db = await conn.database;
|
||||
// final token = await TokenManager.getToken();
|
||||
|
||||
// try {
|
||||
// final List<Map<String, dynamic>> entities =
|
||||
// await researchService.getEntities1(token!);
|
||||
|
||||
// if (entities.isNotEmpty) {
|
||||
// for (var element in entities) {
|
||||
// userList.add(element);
|
||||
// }
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print(e.toString());
|
||||
// }
|
||||
// return userList;
|
||||
// }
|
||||
|
||||
// Future<List<Map<String, dynamic>>> fetchReserachOnlineInfo() async {
|
||||
// Database db = await conn.database;
|
||||
// List<Map<String, dynamic>> researchList = [];
|
||||
// final token = await TokenManager.getToken();
|
||||
|
||||
// try {
|
||||
// final List<Map<String, dynamic>> maps =
|
||||
// await researchService.getEntities1(token!);
|
||||
// for (var item in maps!) {
|
||||
// researchList.add(item);
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print(e.toString());
|
||||
// }
|
||||
// return researchList;
|
||||
// }
|
||||
|
||||
// Future saveReserachToMysqlOnline(List list) async {
|
||||
// for (var element in list) {
|
||||
// uniController.insertEntity(element, 'research_status');
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user