execute method
Implementation
Future<List<T>?> execute(
String sql, {
Map<String, dynamic>? substitutionValues,
}) async {
final conn = await connection;
try {
sql = sql.trim();
if (sql.endsWith(';')) {
sql = sql.substring(0, sql.length - 1);
}
final upperSql = sql.toUpperCase();
if (!upperSql.contains("RETURNING") &&
(upperSql.startsWith("INSERT") ||
upperSql.startsWith("UPDATE") ||
upperSql.startsWith("DELETE"))) {
sql += " RETURNING *";
}
final result = await conn.execute(
Sql.named(sql),
parameters: substitutionValues,
);
if (result.isEmpty) return null;
final List<T> list = [];
for (var row in result) {
final rowMap = row.toColumnMap();
list.add(_mapRow(rowMap));
}
return list;
} catch (e) {
print("Error on execute SQL: $e");
rethrow;
} finally {
await conn.close();
}
}