using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using ChaosBot.Database.Entity;
using Microsoft.Data.Sqlite;
namespace ChaosBot.Database.Repository
{
public static class RaffleRepository
{
private static readonly string Table = "RaffleTable";
///
/// Fetch all Raffles
///
/// List of raffles
public static Raffle[] All()
{
var raffles = Raffle.Query().All();
return raffles.ToArray();
}
///
/// Fetch all Raffles filtered by guildId
///
///
/// List of raffles
public static Raffle[] All(string guildId)
{
var raffles = Raffle.Query().Where("guildId", guildId).All();
return raffles.ToArray();
}
///
/// Count amount of Raffles
///
/// Amount of raffles
public static int Count()
{
return Raffle.Query().Count();
}
///
/// Count amount of Raffles filtered by guildId
///
///
/// Amount of raffles
public static int Count(string guildId)
{
return Raffle.Query().Where("guildId", guildId).Count();
}
///
/// Count amount of Raffles filtered by guildId
///
///
///
/// Amount of raffles
public static int Count(string userId, string guildId)
{
return Raffle.Query().Where("userId", userId).Where("guildId", guildId).Count();
}
///
/// Get all Raffles from a user
///
///
/// List of raffles
public static Raffle[] SelectUser(string userId)
{
List raffles = Raffle.Query().Where("userId", userId).Get();
return raffles.ToArray();
}
///
/// Get all Raffles from a user filtered by guild
///
///
///
/// List of raffles
public static Raffle[] SelectUser(string userId, string guildId)
{
List raffles = Raffle.Query().Where("userId", userId).Where("guildId", guildId).Get();
return raffles.ToArray();
}
///
/// Insert a Raffle into the database
///
///
public static void Insert(Raffle raffle)
{
Raffle.Query().Insert(raffle);
}
///
/// Insert a List of Raffles into the database
///
///
public static void MassInsert(List raffles)
{
foreach (var raf in raffles)
{
Raffle.Query().Insert(raf);
}
}
///
/// Pick a random raffle from the database filtered to a guild
///
///
/// Random raffle
public static Raffle PickRandom(string guildId)
{
return Raffle.Query().Where("guildId", guildId).OrderBy("RANDOM()").First();
}
///
/// Clear all Raffles for a given guild
///
///
public static void ClearRaffle(string guildId)
{
Raffle.Query().Where("guildId", guildId).Delete();
}
///
/// Delete a Raffle by id
///
///
public static void Delete(int id)
{
Raffle.Query().Where("id", id).Delete();
}
}
}