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