execute static method
Implementation
static Future<Map<String, List<Map<String, Object?>?>?>> execute(String query,
{Map<String, Object?>? params,
bool formatJson = false,
bool isCache = false}) async {
if (iSQLService != null) {
return await iSQLService?.execute(query,
params: params, formatJson: formatJson) ??
{};
}
String jparamsString = jsonEncode(
setupDefaultParameter(query, params, formatJson: formatJson));
var queryParameters = {
'query': query,
'jParam': jparamsString,
};
if (kDebugMode) {
print('Execute query: $query, jParam $jparamsString');
}
Map<
String, // table namme
List< // list row -> data tabl
Map<String, Object?>? //data row
>?> retVal = {};
try {
var response =
await http.post(Methods.getURI('/data/exec'), body: queryParameters);
if (response.statusCode == 200) {
if (response.body == '') {
String log =
'$query queryParameters $queryParameters response.body is empty';
LogController.setLog(
log: log,
titleLog: '$SQLService.execute',
);
if (kDebugMode) {
print('[EMPTY RESPONSE]: $log');
}
return retVal;
}
var body = response.body;
//--> return data set
Map<String, dynamic> jsonData = json.decode(body);
jsonData.forEach((key, value) {
List<dynamic> table = value;
List<Map<String, Object>> rsTable = [];
for (int i = 0; i < table.length; i++) {
rsTable.add(Map<String, Object>.from(table[i]));
}
retVal[key] = rsTable;
});
if (kDebugMode) {
print(
'$SQLService.execute query: $query, result length: ${retVal.length.toString()}',
);
}
} else {
String log =
'$SQLService.execute with $query response status code = ${response.statusCode.toString()}';
LogController.setLog(
log: log,
titleLog: '$SQLService.execute',
);
if (kDebugMode) {
print(log);
}
}
} catch (e) {
String log = '$SQLService.execute $query with exception: $e';
LogController.setLog(
log: log,
titleLog: '$SQLService.execute',
);
if (kDebugMode) {
print(log);
}
}
if (retVal.isNotEmpty && retVal.containsKey('Exception')) {
var dataException = Methods.getList(retVal, 'Exception');
if (dataException.isNotEmpty && dataException[0].containsKey('Message')) {
var exception = Methods.getString(dataException[0], 'Message');
if (exception != '') {
if (kDebugMode) {
print(
'==================>[Exception]<==================\n==================> Query:$query\n==================> Parameter:$params\n==================> Message:$exception');
}
}
}
}
// save cache data
if (isCache && retVal.isNotEmpty) {
if (kDebugMode) {
print('Save cache data');
}
CacheData.cache(query, retVal, jParam: params);
}
// Get data cache when there is no internet
if (Get.isRegistered<AuthController>() && isCache) {
AuthController authController = Get.find();
if (!authController.isOnline) {
if (kDebugMode) {
print('Get data cache');
}
return await CacheData.getData(query, jParam: params);
}
}
return retVal;
}