public Task <bool> AnyVersionsAsync(
            Optional <long> guildId = default,
            Optional <IEnumerable <long> > excludedGuildIds = default,
            Optional <string> name              = default,
            Optional <bool> isDeleted           = default,
            Optional <bool> isLatestVersion     = default,
            CancellationToken cancellationToken = default)
        {
            CharactersLogMessages.CharacterGuildVersionsEnumeratingAny(_logger, guildId, excludedGuildIds, name, isDeleted, isLatestVersion);

            var query = _context.Set <CharacterGuildVersionEntity>()
                        .AsQueryable();

            RepositoryLogMessages.QueryInitializing(_logger, query);

            if (guildId.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(guildId));
                query = query.Where(x => x.GuildId == guildId.Value);
            }

            if (excludedGuildIds.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(excludedGuildIds));
                query = query.Where(x => !excludedGuildIds.Value.Contains(x.GuildId));
            }

            if (name.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(name));
                query = query.Where(x => x.Name == name.Value);
            }

            if (isDeleted.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(isDeleted));
                query = query.Where(x => x.IsDeleted == isDeleted.Value);
            }

            if (isLatestVersion.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(isLatestVersion));
                query = isLatestVersion.Value
                    ? query.Where(x => x.NextVersionId == null)
                    : query.Where(x => x.NextVersionId != null);
            }

            RepositoryLogMessages.QueryTerminating(_logger);
            var result = query.AnyAsync(cancellationToken);

            RepositoryLogMessages.QueryExecuting(_logger);
            return(result);
        }
Exemple #2
0
        public Task <bool> AnyDefinitionsAsync(
            Optional <int> level = default,
            Optional <int> experienceThreshold  = default,
            Optional <bool> isDeleted           = default,
            CancellationToken cancellationToken = default)
        {
            CharactersLogMessages.CharacterLevelDefinitionsEnumeratingAny(_logger, level, experienceThreshold, isDeleted);

            var query = _context.Set <CharacterLevelDefinitionVersionEntity>()
                        .AsQueryable()
                        .Where(x => x.NextVersionId == null);

            RepositoryLogMessages.QueryInitializing(_logger, query);

            if (level.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(level));
                query = query.Where(cld => cld.Level == level.Value);
            }

            if (experienceThreshold.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(experienceThreshold));
                query = query.Where(cld => cld.ExperienceThreshold == experienceThreshold.Value);
            }

            if (isDeleted.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(isDeleted));
                query = query.Where(cld => cld.IsDeleted == isDeleted.Value);
            }

            RepositoryLogMessages.QueryTerminating(_logger);
            var result = query.AnyAsync(cancellationToken);

            RepositoryLogMessages.QueryExecuting(_logger);
            return(result);
        }
        public Task <bool> AnyAsync(
            Optional <ulong> userId             = default,
            CancellationToken cancellationToken = default)
        {
            UsersLogMessages.UsersEnumeratingAny(_logger, userId);

            var query = _context.Set <UserEntity>()
                        .AsQueryable();

            RepositoryLogMessages.QueryInitializing(_logger, query);

            if (userId.IsSpecified)
            {
                RepositoryLogMessages.QueryAddingWhereClause(_logger, nameof(userId));
                query = query.Where(x => x.Id == userId.Value);
            }

            RepositoryLogMessages.QueryTerminating(_logger);
            var result = query.AnyAsync(cancellationToken);

            RepositoryLogMessages.QueryExecuting(_logger);
            return(result);
        }