Function create

Source
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}$), unique
  • year: required, must be the current year or later
  • description: optional, max length 1000 characters
  • credits: 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"
}