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 download_count: i64,
17}
18
19#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
20pub enum Relation {
21 #[sea_orm(
22 belongs_to = "super::extension::Entity",
23 from = "Column::ExtensionId",
24 to = "super::extension::Column::Id"
25 on_condition = r#"super::extension::Column::LatestVersion.into_expr().eq(Column::Version.into_expr())"#
26 )]
27 Extension,
28}
29
30impl Related<super::extension::Entity> for Entity {
31 fn to() -> RelationDef {
32 Relation::Extension.def()
33 }
34}
35
36impl ActiveModelBehavior for ActiveModel {}