/// <inheritdoc />
 public Task <bool> AnyAsync(ClaimMappingSearchCriteria criteria)
 => ModixContext.Set <ClaimMappingEntity>().AsNoTracking()
 .FilterBy(criteria)
 .AnyAsync();
 /// <summary>
 /// Creates a new <see cref="PromotionCampaignRepository"/>, with the injected dependencies
 /// See <see cref="PromotionActionEventRepositoryBase"/> for details.
 /// </summary>
 public PromotionCampaignRepository(ModixContext modixContext, IMediator mediator)
     : base(modixContext, mediator)
 {
 }
 /// <inheritdoc />
 public Task <bool> AnyAsync(PromotionCommentSearchCriteria searchCriteria)
 => ModixContext.Set <PromotionCommentEntity>().AsNoTracking()
 .FilterBy(searchCriteria)
 .AnyAsync();
 /// <inheritdoc />
 public async Task <IReadOnlyCollection <DesignatedChannelMappingBrief> > SearchBriefsAsync(DesignatedChannelMappingSearchCriteria searchCriteria)
 => await ModixContext.Set <DesignatedChannelMappingEntity>().AsNoTracking()
 .FilterBy(searchCriteria)
 .AsExpandable()
 .Select(DesignatedChannelMappingBrief.FromEntityProjection)
 .ToArrayAsync();
Esempio n. 5
0
 public DBPromotionRepository(ModixContext context)
 {
     _context = context;
 }
Esempio n. 6
0
 /// <summary>
 /// Creates a new <see cref="GuildChannelRepository"/>.
 /// See <see cref="RepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public GuildChannelRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
 /// <inheritdoc />
 public Task <bool> AnyAsync(
     DesignatedChannelMappingSearchCriteria criteria,
     CancellationToken cancellationToken)
 => ModixContext.Set <DesignatedChannelMappingEntity>().AsNoTracking()
 .FilterBy(criteria)
 .AnyAsync(cancellationToken);
 public BehaviourConfigurationRepository(ModixContext modixContext)
 {
     _modixContext = modixContext;
 }
 /// <summary>
 /// Creates a new <see cref="InfractionRepository"/>.
 /// See <see cref="ModerationActionEventRepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public InfractionRepository(ModixContext modixContext, IEnumerable <IModerationActionEventHandler> moderationActionEventHandlers, IEnumerable <IInfractionEventHandler> infractionEventHandlers)
     : base(modixContext, moderationActionEventHandlers)
 {
     InfractionEventHandlers = infractionEventHandlers;
 }
 /// <summary>
 /// Constructs a new <see cref="ConfigurationActionRepository"/> from the given dependencies.
 /// See <see cref="RepositoryBase"/> for details.
 /// </summary>
 public ConfigurationActionRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
Esempio n. 11
0
 public GuildConfigModule(ModixContext context)
 {
     _context = context;
 }
 /// <summary>
 /// Creates a new <see cref="ClaimMappingRepository"/>.
 /// See <see cref="RepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public ClaimMappingRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
 /// <inheritdoc />
 public async Task <IReadOnlyCollection <ClaimMappingBrief> > SearchBriefsAsync(ClaimMappingSearchCriteria criteria)
 => await ModixContext.Set <ClaimMappingEntity>().AsNoTracking()
 .FilterBy(criteria)
 .AsExpandable()
 .Select(ClaimMappingBrief.FromEntityProjection)
 .ToArrayAsync();
 /// <inheritdoc />
 public async Task <IReadOnlyCollection <long> > SearchIdsAsync(ClaimMappingSearchCriteria criteria)
 => await ModixContext.Set <ClaimMappingEntity>().AsNoTracking()
 .FilterBy(criteria)
 .Select(x => x.Id)
 .ToArrayAsync();
Esempio n. 15
0
        public async Task CreateAsync(MessageEntity message)
        {
            await ModixContext.Messages.AddAsync(message);

            await ModixContext.SaveChangesAsync();
        }
Esempio n. 16
0
 public DiscordUserService(ModixContext context)
 {
     _context = context;
 }
Esempio n. 17
0
 public GuildConfigService(IGuild guild, ModixContext context)
 {
     _guildService = new DiscordGuildService(context);
     _guild        = _guildService.ObtainAsync(guild).Result;
 }
Esempio n. 18
0
 /// <summary>
 /// Creates a new <see cref="GuildRoleRepository"/>.
 /// See <see cref="RepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public GuildRoleRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
 /// <summary>
 /// Creates a new <see cref="DesignatedChannelMappingRepository"/>.
 /// See <see cref="RepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public DesignatedChannelMappingRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
Esempio n. 20
0
 /// <summary>
 /// Creates a new <see cref="ModerationActionRepository"/>.
 /// See <see cref="RepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public ModerationConfigRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
 /// <inheritdoc />
 public async Task <IReadOnlyCollection <ulong> > SearchChannelIdsAsync(DesignatedChannelMappingSearchCriteria searchCriteria)
 => await ModixContext.Set <DesignatedChannelMappingEntity>().AsNoTracking()
 .FilterBy(searchCriteria)
 .Select(x => x.ChannelId)
 .ToArrayAsync();
Esempio n. 22
0
 /// <summary>
 /// Creates a new <see cref="TagRepository"/> with the injected dependencies
 /// See <see cref="RepositoryBase"/> for details.
 /// </summary>
 public TagRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
Esempio n. 23
0
 /// <summary>
 /// Creates a new <see cref="EmojiRepository"/> with the injected dependencies
 /// See <see cref="RepositoryBase"/> for details.
 /// </summary>
 public EmojiRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
Esempio n. 24
0
        public async Task <IReadOnlyCollection <PerUserMessageCount> > GetPerUserMessageCounts(ulong guildId, ulong userId, TimeSpan timespan, int userCount = 10)
        {
            var earliestDateTime = DateTimeOffset.UtcNow - timespan;
            var query            = GetQuery();

            var counts = await ModixContext.Query <PerUserMessageCount>()
                         .AsNoTracking()
                         .FromSql(query,
                                  new NpgsqlParameter(":GuildId", NpgsqlDbType.Bigint)
            {
                Value = unchecked ((long)guildId)
            },
                                  new NpgsqlParameter(":UserId", NpgsqlDbType.Bigint)
            {
                Value = unchecked ((long)userId)
            },
                                  new NpgsqlParameter(":StartTimestamp", NpgsqlDbType.TimestampTz)
            {
                Value = earliestDateTime
            })
                         .ToArrayAsync();

            return(counts);

            string GetQuery()
            => $@"
                    with guildCounts as (
                        select ""AuthorId"" as ""UserId"",
                            row_number() over (order by count(*) desc) as ""Rank"",
                            count(*) as ""MessageCount"",
                            ""AuthorId"" = :UserId as ""IsCurrentUser""
                        from ""Messages""
                        where ""GuildId"" = :GuildId
                            and ""Timestamp"" >= :StartTimestamp
                        group by ""AuthorId"", ""GuildId""
                    ),
                    currentUserCount as (
                        select ""UserId"", ""Rank"", ""MessageCount"", ""IsCurrentUser""
                        from guildCounts
                        where ""UserId"" = :UserId
                    ),
                    guildCountsLimited as (
                        select ""UserId"", ""Rank"", ""MessageCount"", ""IsCurrentUser""
                        from guildCounts
                        limit {userCount}
                    ),
                    unioned as (
                        select ""UserId"", ""Rank"", ""MessageCount"", ""IsCurrentUser""
                        from guildCountsLimited
                        union select ""UserId"", ""Rank"", ""MessageCount"", ""IsCurrentUser""
                        from currentUserCount
                    ),
                    joined as (
                        select ""Username"", ""Discriminator"", ""Rank"", ""MessageCount"", ""IsCurrentUser""
                        from unioned
                        inner join ""Users""
                            on ""Id"" = ""UserId""
                    )
                    select ""Username"", ""Discriminator"", ""Rank"", ""MessageCount"", ""IsCurrentUser""
                    from joined
                    order by ""Rank"" asc";
        }
Esempio n. 25
0
 /// <summary>
 /// Creates a new <see cref="DeletedMessageRepository"/>.
 /// See <see cref="ModerationActionEventRepositoryBase(ModixContext)"/> for details.
 /// </summary>
 public DeletedMessageRepository(ModixContext modixContext, IEnumerable <IModerationActionEventHandler> moderationActionEventHandlers)
     : base(modixContext, moderationActionEventHandlers)
 {
 }
Esempio n. 26
0
 public async Task UpdateStarboardColumn(MessageEntity message)
 {
     ModixContext.Messages.Update(message);
     await ModixContext.SaveChangesAsync();
 }
 /// <inheritdoc />
 public async Task <PromotionCommentSummary> ReadSummaryAsync(long commentId)
 => await ModixContext.Set <PromotionCommentEntity>().AsNoTracking()
 .Where(x => x.Id == commentId)
 .AsExpandable()
 .Select(PromotionCommentSummary.FromEntityProjection)
 .FirstOrDefaultAsync();
Esempio n. 28
0
 public MessageRepository(ModixContext context)
     : base(context)
 {
 }
 /// <summary>
 /// Creates a new <see cref="PromotionCommentRepository"/>, with the injected dependencies.
 /// </summary>
 public PromotionCommentRepository(ModixContext modixContext)
     : base(modixContext)
 {
 }
 /// <inheritdoc />
 public Task <ClaimMappingSummary> ReadAsync(long claimMappingId)
 => ModixContext.Set <ClaimMappingEntity>().AsNoTracking()
 .AsExpandable()
 .Select(ClaimMappingSummary.FromEntityProjection)
 .FirstOrDefaultAsync(x => x.Id == claimMappingId);