dev_server_project.rs

 1use super::project;
 2use crate::db::{DevServerId, DevServerProjectId};
 3use rpc::proto;
 4use sea_orm::entity::prelude::*;
 5
 6#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
 7#[sea_orm(table_name = "dev_server_projects")]
 8pub struct Model {
 9    #[sea_orm(primary_key)]
10    pub id: DevServerProjectId,
11    pub dev_server_id: DevServerId,
12    pub path: String,
13}
14
15impl ActiveModelBehavior for ActiveModel {}
16
17#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
18pub enum Relation {
19    #[sea_orm(has_one = "super::project::Entity")]
20    Project,
21    #[sea_orm(
22        belongs_to = "super::dev_server::Entity",
23        from = "Column::DevServerId",
24        to = "super::dev_server::Column::Id"
25    )]
26    DevServer,
27}
28
29impl Related<super::project::Entity> for Entity {
30    fn to() -> RelationDef {
31        Relation::Project.def()
32    }
33}
34
35impl Related<super::dev_server::Entity> for Entity {
36    fn to() -> RelationDef {
37        Relation::DevServer.def()
38    }
39}
40
41impl Model {
42    pub fn to_proto(&self, project: Option<project::Model>) -> proto::DevServerProject {
43        proto::DevServerProject {
44            id: self.id.to_proto(),
45            project_id: project.map(|p| p.id.to_proto()),
46            dev_server_id: self.dev_server_id.to_proto(),
47            path: self.path.clone(),
48        }
49    }
50}