risingwave_meta_model/
streaming_job.rs1use std::collections::HashMap;
16
17use risingwave_common::id::JobId;
18use risingwave_pb::id::FragmentId;
19use sea_orm::FromJsonQueryResult;
20use sea_orm::entity::prelude::*;
21use serde::{Deserialize, Serialize};
22
23use crate::{CreateType, JobStatus, StreamingParallelism, derive_from_json_struct};
24
25#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)]
26#[sea_orm(table_name = "streaming_job")]
27pub struct Model {
28 #[sea_orm(primary_key, auto_increment = false)]
29 pub job_id: JobId,
30 pub job_status: JobStatus,
31 pub create_type: CreateType,
32 pub timezone: Option<String>,
33 pub config_override: Option<String>,
35 pub parallelism: StreamingParallelism,
36 pub backfill_parallelism: Option<StreamingParallelism>,
37 #[sea_orm(column_type = "JsonBinary", nullable)]
38 pub backfill_orders: Option<BackfillOrders>,
39 pub max_parallelism: i32,
40 pub specific_resource_group: Option<String>,
41 pub is_serverless_backfill: bool,
42}
43
44derive_from_json_struct!(BackfillOrders, HashMap<FragmentId, Vec<FragmentId>>);
53
54#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
55pub enum Relation {
56 #[sea_orm(
57 belongs_to = "super::object::Entity",
58 from = "Column::JobId",
59 to = "super::object::Column::Oid",
60 on_update = "NoAction",
61 on_delete = "Cascade"
62 )]
63 Object,
64}
65
66impl Related<super::object::Entity> for Entity {
67 fn to() -> RelationDef {
68 Relation::Object.def()
69 }
70}
71
72impl ActiveModelBehavior for ActiveModel {}