@Override public <T> Observable<ResultSet> updateRetentionsIndex(String tenantId, MetricType<T> type, Map<String, Integer> retentions) { return Observable.from(retentions.entrySet()) .map(entry -> updateRetentionsIndex.bind(tenantId, type.getCode(), entry.getKey(), entry.getValue())) .compose(new BatchStatementTransformer()) .flatMap(rxSession::execute); }
private Observable<Void> deleteRetentions(String tenantId) { return Observable.from(MetricType.all()) .flatMap(type -> session.execute(deleteRetentions.bind(tenantId, type.getCode()))) .map(r -> null); }
private Observable<Void> deleteMetricsIndex(String tenantId) { return Observable.from(MetricType.all()) .flatMap(type -> session.execute(deleteFromMetricsIndex.bind(tenantId, type.getCode()))) .map(r -> null); }
@Override public <T> Observable<Integer> updateMetricsIndex(Observable<Metric<T>> metrics) { return metrics.map(Metric::getMetricId) .map(id -> updateMetricsIndex.bind(id.getTenantId(), id.getType().getCode(), id.getName())) .compose(new BatchStatementTransformer()) .flatMap(batch -> rxSession.execute(batch).map(resultSet -> batch.size())); }
@Override public <T> Observable<ResultSet> deleteMetricData(MetricId<T> id) { if(id.getType() == STRING) { return rxSession.execute(deleteMetricData.bind(id.getTenantId(), id.getType().getCode(), id.getName(), DPART)); } return getPrepForAllTempTables(TempStatement.DELETE_DATA) .flatMap(p -> rxSession.execute(p.bind(id.getTenantId(), id.getType().getCode(), id.getName()))); }
@Override public <T> Observable<ResultSet> deleteMetricFromMetricsIndex(MetricId<T> id) { return rxSession .execute(deleteMetricFromMetricsIndex.bind(id.getTenantId(), id.getType().getCode(), id.getName())); }
@Override public <T> Observable<Row> findMetricInData(MetricId<T> id) { return getPrepForAllTempTables(TempStatement.CHECK_EXISTENCE_OF_METRIC_IN_TABLE) .map(b -> b.bind(id.getTenantId(), id.getType().getCode(), id.getName())) .flatMap(b -> rxSession.executeAndFetch(b)) .concatWith(rxSession.executeAndFetch(findMetricInData .bind(id.getTenantId(), id.getType().getCode(), id.getName(), DPART)) .concatWith( rxSession.executeAndFetch(findMetricInDataCompressed .bind(id.getTenantId(), id.getType().getCode(), id.getName(), DPART)))) .take(1); }
@Override public <T> Observable<Row> findMetricInMetricsIndex(MetricId<T> id) { return rxSession.executeAndFetch(findMetricInMetricsIndex .bind(id.getTenantId(), id.getType().getCode(), id.getName())); }
@Override public <T> Observable<Row> findMetricInMetricsIndex(MetricId<T> id) { return rxSession.executeAndFetch(findMetricInMetricsIndex .bind(id.getTenantId(), id.getType().getCode(), id.getName())); }
@Override public <T> Observable<ResultSet> deleteMetricFromRetentionIndex(MetricId<T> id) { return rxSession .execute(deleteFromMetricRetentionIndex.bind(id.getTenantId(), id.getType().getCode(), id.getName())); }
@Override public <T> Observable<ResultSet> deleteMetricFromMetricsIndex(MetricId<T> id) { return rxSession .execute(deleteMetricFromMetricsIndex.bind(id.getTenantId(), id.getType().getCode(), id.getName())); }
@Override public <T> Observable<ResultSet> deleteFromMetricsTagsIndex(MetricId<T> id, Map<String, String> tags) { return tagsUpdates(tags, (name, value) -> deleteMetricsTagsIndex.bind(id.getTenantId(), name, value, id.getType().getCode(), id.getName())); }
@Override public <T> Observable<ResultSet> deleteMetricData(MetricId<T> id) { if(id.getType() == STRING) { return rxSession.execute(deleteMetricData.bind(id.getTenantId(), id.getType().getCode(), id.getName(), DPART)); } return getPrepForAllTempTables(TempStatement.DELETE_DATA) .flatMap(p -> rxSession.execute(p.bind(id.getTenantId(), id.getType().getCode(), id.getName()))); }
private BoundStatement bindDataPoint(PreparedStatement statement, Metric<?> metric, Object value, long timestamp) { MetricId<?> metricId = metric.getMetricId(); return statement.bind(value, metricId.getTenantId(), metricId.getType().getCode(), metricId.getName(), DPART, getTimeUUID(timestamp)); }
private BoundStatement bindDataPoint(PreparedStatement statement, Metric<?> metric, Object value, long timestamp) { MetricId<?> metricId = metric.getMetricId(); return statement.bind(value, metricId.getTenantId(), metricId.getType().getCode(), metricId.getName(), DPART, getTimeUUID(timestamp)); }
@Override public <T> Observable<ResultSet> insertIntoMetricsTagsIndex(Metric<T> metric, Map<String, String> tags) { MetricId<T> metricId = metric.getMetricId(); return tagsUpdates(tags, (name, value) -> insertMetricsTagsIndex.bind(metricId.getTenantId(), name, value, metricId.getType().getCode(), metricId.getName())); }
@Override public <T> Observable<ResultSet> addTags(Metric<T> metric, Map<String, String> tags) { MetricId<T> metricId = metric.getMetricId(); BoundStatement stmt = addTagsToMetricsIndex.bind(tags, metricId.getTenantId(), metricId.getType().getCode(), metricId.getName()); return rxSession.execute(stmt); }
@Override public <T> Observable<ResultSet> deleteTags(Metric<T> metric, Set<String> tags) { MetricId<T> metricId = metric.getMetricId(); BoundStatement stmt = deleteTagsFromMetricsIndex.bind(tags, metricId.getTenantId(), metricId.getType().getCode(), metricId.getName()); return rxSession.execute(stmt); }
@Override public <T> ResultSetFuture insertMetricInMetricsIndex(Metric<T> metric, boolean overwrite) { MetricId<T> metricId = metric.getMetricId(); if (overwrite) { return session.executeAsync( insertIntoMetricsIndexOverwrite.bind(metricId.getTenantId(), metricId.getType().getCode(), metricId.getName(), metric.getDataRetention(), metric.getTags())); } return session.executeAsync(insertIntoMetricsIndex.bind(metricId.getTenantId(), metricId.getType().getCode(), metricId.getName(), metric.getDataRetention(), metric.getTags())); }
@Override public <T> ResultSetFuture updateRetentionsIndex(Metric<T> metric) { return session.executeAsync(updateRetentionsIndex.bind(metric.getMetricId().getTenantId(), metric.getMetricId().getType().getCode(), metric.getMetricId().getName(), metric.getDataRetention())); }