flams_backend_types/git.rs
1#[derive(Debug, Clone)]
2#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3#[cfg_attr(feature = "typescript", derive(tsify::Tsify))]
4#[cfg_attr(feature = "typescript", tsify(into_wasm_abi, from_wasm_abi))]
5pub struct Project {
6 pub id: u64,
7 pub name: String,
8 #[cfg_attr(feature = "serde", serde(rename = "path_with_namespace"))]
9 pub path: String,
10 #[cfg_attr(feature = "serde", serde(rename = "http_url_to_repo"))]
11 pub url: String,
12 pub default_branch: Option<String>,
13}
14
15/*
16[{
17 "id":4,
18 "description":null,
19 "name":"third",
20 "name_with_namespace":"some / third",
21 "path":"third",
22 "path_with_namespace":"some/third",
23 "created_at":"2024-12-23T10:43:32.858Z",
24 "default_branch":"main",
25 "tag_list":[],
26 "topics":[],
27 "ssh_url_to_repo":"git@gitlab.example.com:some/third.git",
28 "http_url_to_repo":"http://gitlab.example.com/some/third.git",
29 "web_url":"http://gitlab.example.com/some/third",
30 "readme_url":null,
31 "forks_count":0,
32 "avatar_url":null,
33 "star_count":0,
34 "last_activity_at":
35 "2024-12-23T10:43:32.822Z",
36 "namespace":{
37 "id":3,
38 "name":"some",
39 "path":"some",
40 "kind":"group",
41 "full_path":"some",
42 "parent_id":null,
43 "avatar_url":null,
44 "web_url":"http://gitlab.example.com/groups/some"
45 },
46 "repository_storage":"default",
47 "_links":{
48 "self":"http://gitlab.example.com/api/v4/projects/4",
49 "issues":"http://gitlab.example.com/api/v4/projects/4/issues",
50 "merge_requests":"http://gitlab.example.com/api/v4/projects/4/merge_requests",
51 "repo_branches":"http://gitlab.example.com/api/v4/projects/4/repository/branches",
52 "labels":"http://gitlab.example.com/api/v4/projects/4/labels",
53 "events":"http://gitlab.example.com/api/v4/projects/4/events",
54 "members":"http://gitlab.example.com/api/v4/projects/4/members",
55 "cluster_agents":"http://gitlab.example.com/api/v4/projects/4/cluster_agents"
56 },
57 "packages_enabled":true,
58 "empty_repo":false,
59 "archived":false,
60 "visibility":"public",
61 "resolve_outdated_diff_discussions":false,
62 "container_expiration_policy":{
63 "cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*",
64 "name_regex_keep":null,"next_run_at":"2024-12-24T10:43:32.880Z"
65 },
66 "repository_object_format":"sha1",
67 "issues_enabled":true,
68 "merge_requests_enabled":true,
69 "wiki_enabled":true,
70 "jobs_enabled":true,
71 "snippets_enabled":true,
72 "container_registry_enabled":true,
73 "service_desk_enabled":false,
74 "service_desk_address":null,
75 "can_create_merge_request_in":true,
76 "issues_access_level":"enabled",
77 "repository_access_level":"enabled",
78 "merge_requests_access_level":"enabled",
79 "forking_access_level":"enabled",
80 "wiki_access_level":"enabled",
81 "builds_access_level":"enabled",
82 "snippets_access_level":"enabled",
83 "pages_access_level":"private",
84 "analytics_access_level":"enabled",
85 "container_registry_access_level":"enabled",
86 "security_and_compliance_access_level":"private",
87 "releases_access_level":"enabled",
88 "environments_access_level":"enabled",
89 "feature_flags_access_level":"enabled",
90 "infrastructure_access_level":"enabled",
91 "monitor_access_level":"enabled",
92 "model_experiments_access_level":"enabled",
93 "model_registry_access_level":"enabled",
94 "emails_disabled":false,
95 "emails_enabled":true,
96 "shared_runners_enabled":true,
97 "lfs_enabled":true,
98 "creator_id":2,
99 "import_url":null,
100 "import_type":null,
101 "import_status":"none",
102 "open_issues_count":0,
103 "description_html":"",
104 "updated_at":"2024-12-23T10:44:06.647Z",
105 "ci_default_git_depth":20,
106 "ci_delete_pipelines_in_seconds":null,
107 "ci_forward_deployment_enabled":true,
108 "ci_forward_deployment_rollback_allowed":true,
109 "ci_job_token_scope_enabled":false,
110 "ci_separated_caches":true,
111 "ci_allow_fork_pipelines_to_run_in_parent_project":true,
112 "ci_id_token_sub_claim_components":["project_path","ref_type","ref"],
113 "build_git_strategy":"fetch",
114 "keep_latest_artifact":true,
115 "restrict_user_defined_variables":true,
116 "ci_pipeline_variables_minimum_override_role":"developer",
117 "runners_token":"GR1348941Q6BMWPWzxwoMbcceaybe",
118 "runner_token_expiration_interval":null,
119 "group_runners_enabled":true,
120 "auto_cancel_pending_pipelines":"enabled",
121 "build_timeout":3600,
122 "auto_devops_enabled":true,
123 "auto_devops_deploy_strategy":"continuous",
124 "ci_push_repository_for_job_token_allowed":false,
125 "ci_config_path":null,
126 "public_jobs":true,
127 "shared_with_groups":[],
128 "only_allow_merge_if_pipeline_succeeds":false,
129 "allow_merge_on_skipped_pipeline":null,
130 "request_access_enabled":true,
131 "only_allow_merge_if_all_discussions_are_resolved":false,
132 "remove_source_branch_after_merge":true,
133 "printing_merge_request_link_enabled":true,
134 "merge_method":"merge",
135 "squash_option":"default_off",
136 "enforce_auth_checks_on_uploads":true,
137 "suggestion_commit_message":null,
138 "merge_commit_template":null,
139 "squash_commit_template":null,
140 "issue_branch_template":null,
141 "warn_about_potentially_unwanted_characters":true,
142 "autoclose_referenced_issues":true,
143 "permissions":{"project_access":null,"group_access":null}
144}]
145*/
146
147#[derive(Debug, Clone)]
148#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
149#[cfg_attr(feature = "typescript", derive(tsify::Tsify))]
150#[cfg_attr(feature = "typescript", tsify(into_wasm_abi, from_wasm_abi))]
151pub struct Branch {
152 pub name: String,
153 pub default: bool,
154 pub commit: Commit,
155}
156
157/*
158[
159 {
160 "name":"main",
161 "commit":{
162 "id":"2c10ef48497cb4af1068e194cfe49ea1444321de",
163 "short_id":"2c10ef48",
164 "created_at":"2024-12-23T11:44:01.000+01:00",
165 "parent_ids":[],
166 "title":"init",
167 "message":"init\n",
168 "author_name":"Jazzpirate",
169 "author_email":"raupi@jazzpirate.com",
170 "authored_date":"2024-12-23T11:44:01.000+01:00",
171 "committer_name":"Jazzpirate",
172 "committer_email":"raupi@jazzpirate.com",
173 "committed_date":"2024-12-23T11:44:01.000+01:00",
174 "trailers":{},
175 "extended_trailers":{},
176 "web_url":"http://gitlab.example.com/some/third/-/commit/2c10ef48497cb4af1068e194cfe49ea1444321de"
177 },
178 "merged":false,
179 "protected":true,
180 "developers_can_push":false,
181 "developers_can_merge":false,
182 "can_push":true,
183 "default":true,
184 "web_url":"http://gitlab.example.com/some/third/-/tree/main"
185 }
186]
187 */
188
189#[derive(Debug, Clone)]
190#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
191#[cfg_attr(feature = "typescript", derive(tsify::Tsify))]
192#[cfg_attr(feature = "typescript", tsify(into_wasm_abi, from_wasm_abi))]
193pub struct Commit {
194 pub id: String,
195 #[cfg_attr(feature = "typescript", tsify(type = "string"))]
196 pub created_at: chrono::DateTime<chrono::Utc>,
197 pub parent_ids: Vec<String>,
198 pub title: String,
199 pub message: String,
200 pub author_name: String,
201}
202
203#[derive(Debug, Clone)]
204#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
205#[cfg_attr(feature = "typescript", derive(tsify::Tsify))]
206#[cfg_attr(feature = "typescript", tsify(into_wasm_abi, from_wasm_abi))]
207pub struct TreeEntry {
208 pub name: String,
209 pub path: String,
210 #[cfg_attr(feature = "serde", serde(rename = "type"))]
211 pub tp: DirOrFile,
212}
213
214#[derive(Debug, Clone)]
215#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
216#[cfg_attr(feature = "typescript", derive(tsify::Tsify))]
217#[cfg_attr(feature = "typescript", tsify(into_wasm_abi, from_wasm_abi))]
218pub enum DirOrFile {
219 #[cfg_attr(feature = "serde", serde(rename = "tree"))]
220 Dir,
221 #[cfg_attr(feature = "serde", serde(rename = "blob"))]
222 File,
223}
224
225/*
226 */
227
228/*
229{
230 "id":"2f3cbdf17d7970bda62c7e749b9395295980a5ee",
231 "name":"META-INF",
232 "type":"tree"|"blob",
233 "path":"META-INF",
234 "mode":"040000"
235}
236*/