1use crate::db::ExtensionId;
2use sea_orm::entity::prelude::*;
3use time::PrimitiveDateTime;
4
5#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
6#[sea_orm(table_name = "extension_versions")]
7pub struct Model {
8 #[sea_orm(primary_key)]
9 pub extension_id: ExtensionId,
10 #[sea_orm(primary_key)]
11 pub version: String,
12 pub published_at: PrimitiveDateTime,
13 pub authors: String,
14 pub repository: String,
15 pub description: String,
16 pub schema_version: i32,
17 pub download_count: i64,
18}
19
20#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
21pub enum Relation {
22 #[sea_orm(
23 belongs_to = "super::extension::Entity",
24 from = "Column::ExtensionId",
25 to = "super::extension::Column::Id"
26 on_condition = r#"super::extension::Column::LatestVersion.into_expr().eq(Column::Version.into_expr())"#
27 )]
28 Extension,
29}
30
31impl Related<super::extension::Entity> for Entity {
32 fn to() -> RelationDef {
33 Relation::Extension.def()
34 }
35}
36
37impl ActiveModelBehavior for ActiveModel {}