api/routes/modules/assignments/config/
mod.rs

1/// Routes under `/assignments/{assignment_id}/config`:
2///
3/// - `POST /` → Save or replace the assignment configuration on disk.  
4///   Accepts a JSON object matching the [`ExecutionConfig`] schema (see `/default` for structure).
5///
6/// - `GET /` → Load the assignment configuration from disk if it exists; otherwise returns an empty object.  
7///   The format is based on the [`ExecutionConfig`] struct from `util::execution_config`.
8///
9/// - `GET /default` → Returns the system's default [`ExecutionConfig`] used to initialize new configurations.
10///
11/// Configuration files are stored under:
12/// `ASSIGNMENT_STORAGE_ROOT/module_{id}/assignment_{id}/config/config.json`
13use axum::{
14    Router,
15    routing::{get, post},
16};
17use get::{get_assignment_config, get_default_assignment_config};
18use post::set_assignment_config;
19use util::state::AppState;
20
21use crate::routes::modules::assignments::config::post::reset_assignment_config;
22
23pub mod get;
24pub mod post;
25
26pub fn config_routes() -> Router<AppState> {
27    Router::new()
28        .route("/", post(set_assignment_config))
29        .route("/", get(get_assignment_config))
30        .route("/default", get(get_default_assignment_config))
31        .route("/reset", post(reset_assignment_config)) // TODO Tests 
32}