chaosbot/ChaosBot/Database/Repository/RaffleRepository.cs

141 lines
4.3 KiB
C#

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";
/// <summary>
/// Fetch all <c>Raffle</c>s
/// </summary>
/// <returns>List of raffles</returns>
public static Raffle[] All()
{
var raffles = Raffle.Query().All();
return raffles.ToArray();
}
/// <summary>
/// Fetch all <c>Raffle</c>s filtered by guildId
/// </summary>
/// <param name="guildId"></param>
/// <returns>List of raffles</returns>
public static Raffle[] All(long guildId)
{
var raffles = Raffle.Query().Where("guildId", guildId).All();
return raffles.ToArray();
}
/// <summary>
/// Count amount of <c>Raffle</c>s
/// </summary>
/// <returns>Amount of raffles</returns>
public static int Count()
{
return Raffle.Query().Count();
}
/// <summary>
/// Count amount of <c>Raffle</c>s filtered by guildId
/// </summary>
/// <param name="guildId"></param>
/// <returns>Amount of raffles</returns>
public static int Count(long guildId)
{
return Raffle.Query().Where("guildId", guildId).Count();
}
/// <summary>
/// Count amount of <c>Raffle</c>s filtered by guildId
/// </summary>
/// <param name="userId"></param>
/// <param name="guildId"></param>
/// <returns>Amount of raffles</returns>
public static int Count(long userId, long guildId)
{
return Raffle.Query().Where("userId", userId).Where("guildId", guildId).Count();
}
/// <summary>
/// Get all <c>Raffle</c>s from a user
/// </summary>
/// <param name="userId"></param>
/// <returns>List of raffles</returns>
public static Raffle[] SelectUser(long userId)
{
List<Raffle> raffles = Raffle.Query().Where("userId", userId).Get();
return raffles.ToArray();
}
/// <summary>
/// Get all <c>Raffle</c>s from a user filtered by guild
/// </summary>
/// <param name="userId"></param>
/// <param name="guildId"></param>
/// <returns>List of raffles</returns>
public static Raffle[] SelectUser(long userId, long guildId)
{
List<Raffle> raffles = Raffle.Query().Where("userId", userId).Where("guildId", guildId).Get();
return raffles.ToArray();
}
/// <summary>
/// Insert a <c>Raffle</c> into the database
/// </summary>
/// <param name="raffle"></param>
public static void Insert(Raffle raffle)
{
Raffle.Query().Insert(raffle);
}
/// <summary>
/// Insert a <c>List</c> of <c>Raffle</c>s into the database
/// </summary>
/// <param name="raffles"></param>
public static void MassInsert(List<Raffle> raffles)
{
foreach (var raf in raffles)
{
Raffle.Query().Insert(raf);
}
}
/// <summary>
/// Pick a random raffle from the database filtered to a guild
/// </summary>
/// <param name="guildId"></param>
/// <returns>Random raffle</returns>
public static Raffle PickRandom(long guildId)
{
return Raffle.Query().Where("guildId", guildId).OrderBy("RANDOM()").First();
}
/// <summary>
/// Clear all <c>Raffle</c>s for a given guild
/// </summary>
/// <param name="guildId"></param>
public static void ClearRaffle(long guildId)
{
Raffle.Query().Where("guildId", guildId).Delete();
}
/// <summary>
/// Delete a <c>Raffle</c> by id
/// </summary>
/// <param name="id"></param>
public static void Delete(long id)
{
Raffle.Query().Where("id", id).Delete();
}
}
}