public int LinkToReporter(string messageId, ReporterModel reporterModel) { return(_connection.Execute($@" MERGE INTO [core_rel_messages_reporters] as t USING ( VALUES (@MessageId, @ReporterId, @CreatedAt) ) AS s([MessageId], [ReporterId], [CreatedAt]) ON s.[MessageId] = t.[MessageId] AND s.[ReporterId] = t.[ReporterId] WHEN NOT MATCHED THEN INSERT ( [MessageId], [ReporterId], [CreatedAt] ) VALUES( s.MessageId, s.ReporterId, s.CreatedAt ); ", param: new { MessageId = messageId, ReporterId = reporterModel.Id, CreatedAt = DateTime.Now.ToUnixTimestamp() }, transaction: _transaction)); }
public IEnumerable <MessageModel> GetUnqueuedMessages(ReporterModel reporter, MessageType messageType, int limit, int offset) { return(_connection.Query <MessageModel>($@" SELECT m.* FROM [core_messages] m LEFT JOIN [core_rel_messages_reporters] r ON r.MessageId = m.Id AND r.ReporterId = @ReporterId WHERE ([MessageType] & @MessageType) > 0 AND ([Status] & @Status) = 0 AND r.Id IS NULL ORDER BY [CreatedAt] ASC OFFSET @Offset ROWS FETCH NEXT @Limit ROWS ONLY; ", param: new { Limit = limit, Offset = offset, MessageType = messageType, Status = MessageStatus.Delievered, ReporterId = reporter.Id }, transaction: _transaction)); }
public IReporter SetReportModel(ReporterModel model) { ReporterModel = model; return(this); }