risingwave_meta_model/
hummock_version_stats.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 std::collections::HashMap;
16
17use risingwave_pb::hummock::{HummockVersionStats, TableStats as PbTableStats};
18use risingwave_pb::id::TableId;
19use sea_orm::FromJsonQueryResult;
20use sea_orm::entity::prelude::*;
21use serde::{Deserialize, Serialize};
22
23use crate::HummockVersionId;
24
25#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize, Default)]
26#[sea_orm(table_name = "hummock_version_stats")]
27pub struct Model {
28    #[sea_orm(primary_key, auto_increment = false)]
29    pub id: HummockVersionId,
30    pub stats: TableStats,
31}
32
33#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
34pub enum Relation {}
35
36impl ActiveModelBehavior for ActiveModel {}
37
38#[derive(Clone, Debug, PartialEq, Eq, FromJsonQueryResult, Serialize, Deserialize, Default)]
39pub struct TableStats(pub HashMap<TableId, PbTableStats>);
40
41impl From<Model> for HummockVersionStats {
42    fn from(value: Model) -> Self {
43        Self {
44            hummock_version_id: value.id as _,
45            table_stats: value.stats.0,
46        }
47    }
48}