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 adaptive_parallelism_strategy: Option<String>,
36 pub parallelism: StreamingParallelism,
37 pub backfill_parallelism: Option<StreamingParallelism>,
38 #[sea_orm(column_type = "JsonBinary", nullable)]
39 pub backfill_orders: Option<BackfillOrders>,
40 pub max_parallelism: i32,
41 pub specific_resource_group: Option<String>,
42 pub is_serverless_backfill: bool,
43}
44
45derive_from_json_struct!(BackfillOrders, HashMap<FragmentId, Vec<FragmentId>>);
54
55#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
56pub enum Relation {
57 #[sea_orm(
58 belongs_to = "super::object::Entity",
59 from = "Column::JobId",
60 to = "super::object::Column::Oid",
61 on_update = "NoAction",
62 on_delete = "Cascade"
63 )]
64 Object,
65}
66
67impl Related<super::object::Entity> for Entity {
68 fn to() -> RelationDef {
69 Relation::Object.def()
70 }
71}
72
73impl ActiveModelBehavior for ActiveModel {}