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(long 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(long guildId) { return Raffle.Query().Where("guildId", guildId).Count(); } /// /// Count amount of Raffles filtered by guildId /// /// /// /// Amount of raffles public static int Count(long userId, long guildId) { return Raffle.Query().Where("userId", userId).Where("guildId", guildId).Count(); } /// /// Get all Raffles from a user /// /// /// List of raffles public static Raffle[] SelectUser(long 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(long userId, long 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(long guildId) { return Raffle.Query().Where("guildId", guildId).OrderBy("RANDOM()").First(); } /// /// Clear all Raffles for a given guild /// /// public static void ClearRaffle(long guildId) { Raffle.Query().Where("guildId", guildId).Delete(); } /// /// Delete a Raffle by id /// /// public static void Delete(long id) { Raffle.Query().Where("id", id).Delete(); } } }