Files
authsec_flutter/lib/LocalStorage/UniController.dart
T
2026-09-23 23:04:22 +05:30

106 lines
3.1 KiB
Dart

import 'package:sqflite/sqflite.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
// OLD: import 'databasehelper.dart'; // wrong case fails on Linux Docker - by Azmat
import 'DatabaseHelper.dart'; // fixed case capital D+H for Linux build - by Azmat
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
// OLD: var entityId = await db.insert(tableName, entity);
var entityId = await db.insert(tableName, entity, conflictAlgorithm: ConflictAlgorithm.replace); // overwrite same id instead of crash - by Azmat on 23-sep
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) {
// OLD: insertEntity(entity, tableName);
batch.insert(tableName, entity, conflictAlgorithm: ConflictAlgorithm.replace);
}
// OLD: await batch.commit();
await batch.commit(); // real batch write with overwrite - by Azmat on 23-sep
}
// 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;
}
Future<int> deleteAll(String tableName) async {
Database db = await conn.database;
return await db.delete(tableName); // clear table for fresh server sync - by Azmat on 23-sep
}
// 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;
}
}