141 lines
4.3 KiB
C#
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(int id)
|
|
{
|
|
Raffle.Query().Where("id", id).Delete();
|
|
}
|
|
}
|
|
} |