api/routes/modules/assignments/tickets/ticket_messages/
mod.rs

1//! Ticket message routes.
2//!
3//! Provides all endpoints for managing ticket messages within a module assignment.
4//!
5//! Endpoints include creating, editing, deleting, and retrieving messages.  
6//! Access control is enforced using `is_valid` and author checks for editing/deleting messages.
7
8use axum::{Router, routing::{post, put, delete, get}};
9use util::state::AppState;
10
11pub mod post;
12pub mod put;
13pub mod delete;
14pub mod common;
15pub mod get;
16
17use post::create_message;
18use put::edit_ticket_message;
19use delete::delete_ticket_message;
20use get::get_ticket_messages;
21
22/// Returns a `Router` configured with ticket message endpoints.
23///
24/// ### Routes
25/// - `POST /` → Create a new ticket message (`create_message`)
26/// - `GET /` → Retrieve all messages for a ticket (`get_ticket_messages`)
27/// - `PUT /{message_id}` → Edit an existing ticket message (`edit_ticket_message`)
28/// - `DELETE /{message_id}` → Delete a ticket message (`delete_ticket_message`)
29///
30/// ### Note
31/// - Routes expect the `AppState` extractor to provide the database connection.
32/// - Authorization is enforced per handler.
33pub fn ticket_message_routes(_app_state: AppState) -> Router<AppState> {
34    Router::new()
35        .route("/", post(create_message))
36        .route("/", get(get_ticket_messages))
37        .route("/{message_id}", put(edit_ticket_message))
38        .route("/{message_id}", delete(delete_ticket_message))
39}