Files
scylladb/db/view/view_building_task_mutation_builder.hh
Michał Jadwiszczak 82eb5611ab db/view_building_task_mutation_builder: add empty() method
The method allows to check if the builder contains any changes,
so it will allow to skip emitting empty mutation.
2026-05-18 09:54:26 +02:00

66 lines
2.2 KiB
C++

/*
* Copyright (C) 2025-present ScyllaDB
*/
/*
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.1
*/
#pragma once
#include "db/view/view_building_state.hh"
#include "mutation/mutation.hh"
#include "db/system_keyspace.hh"
#include "mutation/timestamp.hh"
namespace db {
namespace view {
// Factory for mutations to `system.view_building_tasks` table.
class view_building_task_mutation_builder {
api::timestamp_type _ts;
std::optional<task_uuid_generator> _uuid_gen;
schema_ptr _s;
mutation _m;
public:
view_building_task_mutation_builder(api::timestamp_type ts, std::optional<task_uuid_generator> uuid_gen = std::nullopt)
: _ts(ts)
, _uuid_gen(std::move(uuid_gen))
, _s(db::system_keyspace::view_building_tasks())
, _m(_s, partition_key::from_single_value(*_s, data_value("view_building").serialize_nonnull()))
{ }
utils::UUID new_id();
view_building_task_mutation_builder& set_type(utils::UUID id, db::view::view_building_task::task_type type);
view_building_task_mutation_builder& set_aborted(utils::UUID id, bool aborted);
view_building_task_mutation_builder& set_base_id(utils::UUID id, table_id base_id);
view_building_task_mutation_builder& set_view_id(utils::UUID id, table_id view_id);
view_building_task_mutation_builder& set_last_token(utils::UUID id, dht::token last_token);
view_building_task_mutation_builder& set_replica(utils::UUID id, const locator::tablet_replica& replica);
view_building_task_mutation_builder& del_task(utils::UUID id);
// Deletes all tasks with clustering key < id using a range tombstone.
view_building_task_mutation_builder& del_tasks_before(utils::UUID id);
// Deletes all tasks using a range tombstone covering the entire clustering range.
view_building_task_mutation_builder& del_all_tasks();
// Sets the static column min_task_id to `id`.
view_building_task_mutation_builder& set_min_task_id(utils::UUID id);
view_building_task_mutation_builder& set_task(db::view::view_building_task& task);
mutation build() {
return std::move(_m);
}
bool empty() const {
return _m.partition().empty();
}
private:
clustering_key get_ck(utils::UUID id);
};
}
}