pub async fn create(
__arg0: State<AppState>,
__arg1: Json<ModuleRequest>,
) -> impl IntoResponse
Expand description
POST /api/modules
Create a new university module. Only accessible by admin users.
§Request Body
{
"code": "COS301",
"year": 2025,
"description": "Advanced Software Engineering",
"credits": 16
}
§Validation Rules
code
: required, must be uppercase alphanumeric (e.g.,^[A-Z]{3}\d{3}$
), uniqueyear
: required, must be the current year or laterdescription
: optional, max length 1000 characterscredits
: required, must be a positive integer
§Responses
201 Created
{
"success": true,
"data": {
"id": 1,
"code": "COS301",
"year": 2025,
"description": "Advanced Software Engineering",
"credits": 16,
"created_at": "2025-05-23T18:00:00Z",
"updated_at": "2025-05-23T18:00:00Z"
},
"message": "Module created successfully"
}
400 Bad Request
(validation failure)
{
"success": false,
"message": "Invalid input: code format must be ABC123 and credits must be a positive number"
}
403 Forbidden
(missing admin role)
{
"success": false,
"message": "You do not have permission to perform this action"
}
409 Conflict
(duplicate code)
{
"success": false,
"message": "A module with this code already exists"
}
500 Internal Server Error
{
"success": false,
"message": "Database error: detailed error here"
}