diff --git a/Cargo.lock b/Cargo.lock index 2416d7e..1112425 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -986,6 +986,10 @@ dependencies = [ "serde", ] +[[package]] +name = "entities" +version = "0.1.0" + [[package]] name = "equivalent" version = "1.0.2" diff --git a/Cargo.toml b/Cargo.toml index 2d012f6..65be1ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "3" -members = ["./crates/bot", "./crates/migration"] +members = ["./crates/bot", "./crates/migration", "crates/entities"] [workspace.package] version = "0.1.0" @@ -12,3 +12,4 @@ name = "discord-server-telemetry" tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread"] } sea-orm = { version = "2.0.0-rc", features = [ "sqlx-sqlite", "runtime-tokio-rustls", "macros" ] } migration = { path = "./crates/migration" } +entities = { path = "crates/entities" } diff --git a/crates/entities/Cargo.toml b/crates/entities/Cargo.toml new file mode 100644 index 0000000..369e9b9 --- /dev/null +++ b/crates/entities/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "entities" +edition = "2024" +version.workspace = true + +[dependencies] diff --git a/crates/entities/src/content.rs b/crates/entities/src/content.rs new file mode 100644 index 0000000..1d79abe --- /dev/null +++ b/crates/entities/src/content.rs @@ -0,0 +1,26 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.19 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "content")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub content: String, + pub r#type: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::messages::Entity")] + Messages, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Messages.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/entities/src/lib.rs b/crates/entities/src/lib.rs new file mode 100644 index 0000000..3f8904d --- /dev/null +++ b/crates/entities/src/lib.rs @@ -0,0 +1,8 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.19 + +pub mod prelude; + +pub mod content; +pub mod members; +pub mod messages; +pub mod server; diff --git a/crates/entities/src/members.rs b/crates/entities/src/members.rs new file mode 100644 index 0000000..a3b0757 --- /dev/null +++ b/crates/entities/src/members.rs @@ -0,0 +1,17 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.19 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "members")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub id_discord: i32, + pub name: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/entities/src/messages.rs b/crates/entities/src/messages.rs new file mode 100644 index 0000000..a0f83e9 --- /dev/null +++ b/crates/entities/src/messages.rs @@ -0,0 +1,34 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.19 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "messages")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub id_discord: i32, + pub id_sender: i32, + pub id_content: i32, + pub id_server: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::content::Entity", + from = "Column::IdContent", + to = "super::content::Column::Id", + on_update = "NoAction", + on_delete = "NoAction" + )] + Content, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Content.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/entities/src/prelude.rs b/crates/entities/src/prelude.rs new file mode 100644 index 0000000..9c006b8 --- /dev/null +++ b/crates/entities/src/prelude.rs @@ -0,0 +1,6 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.19 + +pub use super::content::Entity as Content; +pub use super::members::Entity as Members; +pub use super::messages::Entity as Messages; +pub use super::server::Entity as Server; diff --git a/crates/entities/src/server.rs b/crates/entities/src/server.rs new file mode 100644 index 0000000..589afbb --- /dev/null +++ b/crates/entities/src/server.rs @@ -0,0 +1,17 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.19 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "server")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub id_discord: String, + pub name: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {}