Adding Clear and Transactional Method
This commit is contained in:
parent
fcd3c04ebb
commit
4fa9884f88
@ -91,6 +91,56 @@ namespace ChaosBot.Database
|
||||
}
|
||||
}
|
||||
|
||||
public static int TransactionQuery(List<SqliteCommand> cmds)
|
||||
{
|
||||
SqliteCommand command = _conn.CreateCommand();
|
||||
SqliteTransaction transaction;
|
||||
|
||||
// Start a local transaction.
|
||||
transaction = _conn.BeginTransaction();
|
||||
|
||||
// Must assign both transaction object and connection
|
||||
// to Command object for a pending local transaction
|
||||
command.Connection = _conn;
|
||||
command.Transaction = transaction;
|
||||
|
||||
try
|
||||
{
|
||||
foreach (var cmd in cmds)
|
||||
{
|
||||
command.CommandText = cmd.ToString();
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
// Attempt to commit the transaction.
|
||||
transaction.Commit();
|
||||
_logger.Info($"{cmds.Count} record(s) are written to database.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Warn("Commit Exception Type: {0}", ex.GetType());
|
||||
_logger.Warn(" Message: {0}", ex.Message);
|
||||
|
||||
// Attempt to roll back the transaction.
|
||||
try
|
||||
{
|
||||
transaction.Rollback();
|
||||
}
|
||||
catch (Exception ex2)
|
||||
{
|
||||
// This catch block will handle any errors that may have occurred
|
||||
// on the server that would cause the rollback to fail, such as
|
||||
// a closed connection.
|
||||
_logger.Warn("Rollback Exception Type: {0}", ex2.GetType());
|
||||
_logger.Warn(" Message: {0}", ex2.Message);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return cmds.Count;
|
||||
}
|
||||
|
||||
public static DataTable SelectQuery(string table, string selectColumns = "*", Dictionary<string, object> filterColumns = null, string orderByKey = null)
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
|
||||
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using ChaosBot.Database.Entity;
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
||||
namespace ChaosBot.Database.Repository
|
||||
{
|
||||
@ -93,6 +94,15 @@ namespace ChaosBot.Database.Repository
|
||||
return new Raffle(idFetch, userIdFetch);
|
||||
}
|
||||
|
||||
public static int clearRaffle()
|
||||
{
|
||||
List<SqliteCommand> cmds = new List<SqliteCommand>();
|
||||
|
||||
cmds.Add(new SqliteCommand("delete from RaffleTable;"));
|
||||
cmds.Add(new SqliteCommand("UPDATE SQLITE_SEQUENCE SET seq = 0 WHERE name = 'RaffleTable';"));
|
||||
|
||||
return Controller.TransactionQuery(cmds);
|
||||
}
|
||||
// public static void delete()
|
||||
// {
|
||||
//
|
||||
|
||||
@ -167,11 +167,9 @@ namespace ChaosBot.Discord.Modules
|
||||
|
||||
private void ClearRaffle(StringBuilder sb, bool noOutput = false)
|
||||
{
|
||||
_currentPot.Clear();
|
||||
int Removed = RaffleRepository.clearRaffle();
|
||||
|
||||
if (noOutput) return;
|
||||
|
||||
sb.AppendLine($"{Context.User.Mention} has cleared all rafflepoints");
|
||||
sb.AppendLine($"{Context.User.Mention} has cleared all {Removed} rafflepoints");
|
||||
}
|
||||
|
||||
private void StatusRaffle(StringBuilder sb, string user)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user