risingwave_meta_model/
subscription.rs1use risingwave_common::id::TableId;
16use risingwave_pb::catalog::PbSubscription;
17use sea_orm::ActiveValue::Set;
18use sea_orm::entity::prelude::*;
19use serde::{Deserialize, Serialize};
20
21use crate::SubscriptionId;
22
23#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)]
24#[sea_orm(table_name = "subscription")]
25pub struct Model {
26 #[sea_orm(primary_key, auto_increment = false)]
27 pub subscription_id: SubscriptionId,
28 pub name: String,
29 pub retention_seconds: i64,
30 pub definition: String,
31 pub subscription_state: i32,
32 pub dependent_table_id: TableId,
33}
34
35#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
36pub enum Relation {
37 #[sea_orm(
38 belongs_to = "super::object::Entity",
39 from = "Column::SubscriptionId",
40 to = "super::object::Column::Oid",
41 on_update = "NoAction",
42 on_delete = "Cascade"
43 )]
44 Object,
45 #[sea_orm(
46 belongs_to = "super::object::Entity",
47 from = "Column::DependentTableId",
48 to = "super::object::Column::Oid",
49 on_update = "NoAction",
50 on_delete = "Cascade"
51 )]
52 DependentObject,
53}
54
55impl Related<super::object::Entity> for Entity {
56 fn to() -> RelationDef {
57 Relation::Object.def()
58 }
59}
60
61impl ActiveModelBehavior for ActiveModel {}
62
63impl From<PbSubscription> for ActiveModel {
64 fn from(pb_subscription: PbSubscription) -> Self {
65 Self {
66 subscription_id: Set(pb_subscription.id),
67 name: Set(pb_subscription.name),
68 retention_seconds: Set(pb_subscription.retention_seconds as _),
69 definition: Set(pb_subscription.definition),
70 subscription_state: Set(pb_subscription.subscription_state),
71 dependent_table_id: Set(pb_subscription.dependent_table_id),
72 }
73 }
74}