deleted players get ignored when includeDeleted is false
This commit is contained in:
@@ -110,25 +110,40 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
||||
/* Read */
|
||||
|
||||
/// Retrieves the total count of players in the database.
|
||||
Future<int> getPlayerCount() async {
|
||||
final count =
|
||||
await (selectOnly(playerTable)..addColumns([playerTable.id.count()]))
|
||||
.map((row) => row.read(playerTable.id.count()))
|
||||
.getSingle();
|
||||
/// By default, only returns non-deleted players.
|
||||
Future<int> getPlayerCount({bool includeDeleted = false}) async {
|
||||
final query = selectOnly(playerTable)..addColumns([playerTable.id.count()]);
|
||||
if (!includeDeleted) {
|
||||
query.where(playerTable.deleted.equals(false));
|
||||
}
|
||||
final count = await query
|
||||
.map((row) => row.read(playerTable.id.count()))
|
||||
.getSingle();
|
||||
return count ?? 0;
|
||||
}
|
||||
|
||||
/// Checks if a player with the given [playerId] exists in the database.
|
||||
/// By default, only returns non-deleted players.
|
||||
/// Returns `true` if the player exists, `false` otherwise.
|
||||
Future<bool> playerExists({required String playerId}) async {
|
||||
Future<bool> playerExists({
|
||||
required String playerId,
|
||||
bool includeDeleted = false,
|
||||
}) async {
|
||||
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
||||
if (!includeDeleted) {
|
||||
query.where((p) => p.deleted.equals(false));
|
||||
}
|
||||
final result = await query.getSingleOrNull();
|
||||
return result != null;
|
||||
}
|
||||
|
||||
/// Retrieves all players from the database.
|
||||
Future<List<Player>> getAllPlayers() async {
|
||||
/// By default, only returns non-deleted players.
|
||||
Future<List<Player>> getAllPlayers({bool includeDeleted = false}) async {
|
||||
final query = select(playerTable);
|
||||
if (!includeDeleted) {
|
||||
query.where((p) => p.deleted.equals(false));
|
||||
}
|
||||
final result = await query.get();
|
||||
return result
|
||||
.map(
|
||||
@@ -144,8 +159,15 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
||||
}
|
||||
|
||||
/// Retrieves a [Player] by their [id].
|
||||
Future<Player> getPlayerById({required String playerId}) async {
|
||||
/// By default, only returns non-deleted players.
|
||||
Future<Player> getPlayerById({
|
||||
required String playerId,
|
||||
bool includeDeleted = false,
|
||||
}) async {
|
||||
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
||||
if (!includeDeleted) {
|
||||
query.where((p) => p.deleted.equals(false));
|
||||
}
|
||||
final result = await query.getSingle();
|
||||
return Player(
|
||||
id: result.id,
|
||||
@@ -226,8 +248,15 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
||||
/* Name count management */
|
||||
|
||||
/// Retrieves the count of players with the given [name].
|
||||
Future<int> getNameCount({required String name}) async {
|
||||
/// By default, only returns non-deleted players.
|
||||
Future<int> getNameCount({
|
||||
required String name,
|
||||
bool includeDeleted = false,
|
||||
}) async {
|
||||
final query = select(playerTable)..where((p) => p.name.equals(name));
|
||||
if (!includeDeleted) {
|
||||
query.where((p) => p.deleted.equals(false));
|
||||
}
|
||||
final result = await query.get();
|
||||
return result.length;
|
||||
}
|
||||
@@ -246,11 +275,17 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
||||
}
|
||||
|
||||
@visibleForTesting
|
||||
Future<Player?> getPlayerWithHighestNameCount({required String name}) async {
|
||||
Future<Player?> getPlayerWithHighestNameCount({
|
||||
required String name,
|
||||
bool includeDeleted = false,
|
||||
}) async {
|
||||
final query = select(playerTable)
|
||||
..where((p) => p.name.equals(name))
|
||||
..orderBy([(p) => OrderingTerm.desc(p.nameCount)])
|
||||
..limit(1);
|
||||
if (!includeDeleted) {
|
||||
query.where((p) => p.deleted.equals(false));
|
||||
}
|
||||
final result = await query.getSingleOrNull();
|
||||
if (result != null) {
|
||||
return Player(
|
||||
|
||||
Reference in New Issue
Block a user