public async Task <Battle?> GetNextBattle() { DbCommand PrepareQuery(IDatabase database) { var cmd = _db.CreateCommand(); cmd.CommandText = "SELECT * FROM FleetsBattleQueue ORDER BY ROWID LIMIT 1;"; return(cmd); } var enumerable = new SqlAsyncResult <Battle?>(_db, PrepareQuery, a => Battle.Parse(a)); return(await enumerable.SingleOrDefaultAsync()); }
public async Task <byte[]?> LoadBlob(ulong id) { DbCommand PrepareQuery(IDatabase database) { var cmd = _db.CreateCommand(); cmd.CommandText = "SELECT Blob FROM Fleets WHERE FleetId = @FleetId;"; cmd.Parameters.Add(new SqliteParameter("@FleetId", DbType.UInt64) { Value = id }); return(cmd); } var enumerable = new SqlAsyncResult <byte[]?>(_db, PrepareQuery, a => (byte[])a["Blob"]); return(await enumerable.SingleOrDefaultAsync()); }
public async Task <FleetTrueskillRating?> GetRank(ulong id) { DbCommand PrepareQuery(IDatabase database) { var cmd = _db.CreateCommand(); cmd.CommandText = "SELECT Fleets.FleetId, Mean, StdDev, UserId, Name FROM FleetsRanks INNER JOIN Fleets ON Fleets.FleetId=FleetsRanks.FleetId WHERE Fleets.FleetId = @FleetId;"; cmd.Parameters.Add(new SqliteParameter("@FleetId", DbType.UInt64) { Value = id }); return(cmd); } var enumerable = new SqlAsyncResult <FleetTrueskillRating?>(_db, PrepareQuery, a => FleetTrueskillRating.Read(a)); return(await enumerable.SingleOrDefaultAsync()); }
public async Task <IReadOnlyList <FleetTrueskillRating> > GetTopTanks(uint limit) { DbCommand PrepareQuery(IDatabase database) { var cmd = _db.CreateCommand(); cmd.CommandText = "SELECT Fleets.FleetId, Mean, StdDev, UserId, Name FROM FleetsRanks INNER JOIN Fleets ON Fleets.FleetId=FleetsRanks.FleetId ORDER BY (Mean - 3 * StdDev) DESC"; cmd.Parameters.Add(new SqliteParameter("@Limit", DbType.UInt32) { Value = limit }); return(cmd); } var enumerable = new SqlAsyncResult <FleetTrueskillRating>(_db, PrepareQuery, FleetTrueskillRating.Read); return(await enumerable.ToListAsync()); }
public async Task <IReadOnlyList <Battle> > Queue(uint limit = uint.MaxValue) { DbCommand PrepareQuery(IDatabase database) { var cmd = _db.CreateCommand(); cmd.CommandText = "SELECT * FROM FleetsBattleQueue LIMIT @Limit"; cmd.Parameters.Add(new SqliteParameter("@Limit", DbType.UInt32) { Value = limit }); return(cmd); } var enumerable = new SqlAsyncResult <Battle>(_db, PrepareQuery, Battle.Parse); return(await enumerable.ToListAsync()); }