extension.rs

 1use chrono::{DateTime, Utc};
 2use serde::{Deserialize, Serialize};
 3use std::sync::Arc;
 4
 5#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
 6pub struct ExtensionApiManifest {
 7    pub name: String,
 8    pub version: Arc<str>,
 9    pub description: Option<String>,
10    pub authors: Vec<String>,
11    pub repository: String,
12    pub schema_version: Option<i32>,
13    pub wasm_api_version: Option<String>,
14}
15
16#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
17pub struct ExtensionMetadata {
18    pub id: Arc<str>,
19    #[serde(flatten)]
20    pub manifest: ExtensionApiManifest,
21    pub published_at: DateTime<Utc>,
22    pub download_count: u64,
23}
24
25#[derive(Serialize, Deserialize)]
26pub struct GetExtensionsResponse {
27    pub data: Vec<ExtensionMetadata>,
28}