risingwave_meta/hummock/model/
compaction_status.rs

1// Copyright 2025 RisingWave Labs
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use itertools::Itertools;
16
17use crate::hummock::compaction::CompactStatus;
18
19impl From<&CompactStatus> for risingwave_pb::hummock::CompactStatus {
20    fn from(status: &CompactStatus) -> Self {
21        risingwave_pb::hummock::CompactStatus {
22            compaction_group_id: status.compaction_group_id,
23            level_handlers: status.level_handlers.iter().map_into().collect(),
24        }
25    }
26}
27
28impl From<CompactStatus> for risingwave_pb::hummock::CompactStatus {
29    fn from(status: CompactStatus) -> Self {
30        (&status).into()
31    }
32}
33
34impl From<&risingwave_pb::hummock::CompactStatus> for CompactStatus {
35    fn from(status: &risingwave_pb::hummock::CompactStatus) -> Self {
36        CompactStatus {
37            compaction_group_id: status.compaction_group_id,
38            level_handlers: status.level_handlers.iter().map_into().collect(),
39        }
40    }
41}