Beispiel #1
0
        public async Task Store(Subscription subscription, CancellationToken cancellationToken)
        {
            var entity = new
            {
                Active = true,
                subscription.SubscriptionId,
                subscription.Trigger,
                subscription.InitialRecordTime,
                subscription.ReportIfEmpty,
                subscription.Schedule?.Second,
                subscription.Schedule?.Hour,
                subscription.Schedule?.Minute,
                subscription.Schedule?.Month,
                subscription.Schedule?.DayOfMonth,
                subscription.Schedule?.DayOfWeek,
                subscription.Destination,
                subscription.QueryName
            };

            var entityId = await _connection.ExecuteScalarAsync <int>(new CommandDefinition(SubscriptionRequests.Store, entity, cancellationToken : cancellationToken));

            var parameters   = subscription.Parameters.Select(parameter => new { SubscriptionId = entityId, parameter.Name }).ToArray();
            var parameterIds = (await _connection.BulkInsertReturningAsync(SubscriptionRequests.StoreParameter, parameters, cancellationToken: cancellationToken)).ToArray();
            var values       = subscription.Parameters.SelectMany((p, i) => p.Values.Select(value => new { ParameterId = parameterIds[i], Value = value })).ToArray();

            await _connection.BulkInsertAsync(SubscriptionRequests.StoreParameterValue, values, cancellationToken : cancellationToken);
        }
Beispiel #2
0
 public async Task <int[]> Store <T>(string command, T[] parameters, CancellationToken cancellationToken) => (await _connection.BulkInsertReturningAsync <T>(command, parameters, _transaction, cancellationToken: cancellationToken)).ToArray();