Skip to main content

mj_core/
project_picker.rs

1//! Shared request and response types for repository discovery.
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(tag = "kind", rename_all = "snake_case")]
7pub enum ProjectDiscoveryRequest {
8    Github {
9        query: String,
10    },
11    Directory {
12        path: String,
13        #[serde(default)]
14        filter: String,
15    },
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
19pub struct ProjectDiscovery {
20    pub entries: Vec<ProjectEntry>,
21    pub directory: Option<String>,
22    pub parent: Option<String>,
23    pub truncated: bool,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
27pub struct ProjectEntry {
28    pub name: String,
29    pub source: String,
30    pub description: String,
31    pub kind: ProjectEntryKind,
32}
33
34#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
35#[serde(rename_all = "snake_case")]
36pub enum ProjectEntryKind {
37    Repository,
38    Directory,
39}