blob: 06fc51c68b9b17fd5c310d0442653889b00d481a [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef COBALT_ANALYZER_STORE_OBSERVATION_STORE_INTERNAL_H_
#define COBALT_ANALYZER_STORE_OBSERVATION_STORE_INTERNAL_H_
// This file contains the declarations of private implementation functions
// that need to be accessible to unit tests. Non-test clients should not
// access these functions directly.
#include <string>
namespace cobalt {
namespace analyzer {
namespace store {
namespace internal {
// Returns the row key that encapsulates the given data.
std::string RowKey(uint32_t customer_id, uint32_t project_id,
uint32_t metric_id, uint32_t day_index,
uint64_t current_time_millis, uint32_t random);
// Returns the day_index encoded by |row_key|.
uint32_t DayIndexFromRowKey(const std::string& row_key);
// Returns the lexicographically least row key for rows with the given
// data.
std::string RangeStartKey(uint32_t customer_id, uint32_t project_id,
uint32_t metric_id, uint32_t day_index);
// Returns the lexicographically least row key that is greater than all row
// keys for rows with the given metadata, if day_index < UINT32_MAX. In the case
// that |day_index| = UINT32_MAX, returns the lexicographically least row key
// that is greater than all row keys for rows with the given values of
// the other parameters.
std::string RangeLimitKey(uint32_t customer_id, uint32_t project_id,
uint32_t metric_id, uint32_t day_index);
// Generates a new row key for a row with the given data.
std::string GenerateNewRowKey(uint32_t customer_id, uint32_t project_id,
uint32_t metric_id, uint32_t day_index);
bool ParseEncryptedObservationPart(ObservationPart* observation_part,
std::string bytes);
} // namespace internal
} // namespace store
} // namespace analyzer
} // namespace cobalt
#endif // COBALT_ANALYZER_STORE_OBSERVATION_STORE_INTERNAL_H_