package http

// routes.go - HTTP route registration for MapleFile backend
// This file documents all available endpoints

/*
ROUTE STRUCTURE:

Public Routes (No authentication required):
  GET  /health                          - Health check
  GET  /version                         - Version information
  POST /api/v1/auth/register            - User registration
  POST /api/v1/auth/login               - User login
  POST /api/v1/auth/refresh             - Refresh JWT token
  POST /api/v1/auth/logout              - Logout

Protected Routes (Authentication required):

Auth & Profile:
  GET    /api/v1/me                     - Get current user profile
  PUT    /api/v1/me                     - Update user profile
  DELETE /api/v1/me                     - Delete user account
  POST   /api/v1/me/verify              - Verify user profile

Dashboard:
  GET    /api/v1/dashboard              - Get dashboard data

Invitations:
  POST   /api/v1/invites/send-email     - Send invitation to non-registered user

Collections (Basic CRUD):
  POST   /api/v1/collections            - Create collection
  GET    /api/v1/collections            - List user collections
  GET    /api/v1/collections/{id}       - Get collection by ID
  PUT    /api/v1/collections/{id}       - Update collection
  DELETE /api/v1/collections/{id}       - Delete collection

Collections (Hierarchical):
  GET    /api/v1/collections/root       - Get root collections
  GET    /api/v1/collections/parent/{parent_id} - Get collections by parent
  PUT    /api/v1/collections/{id}/move  - Move collection

Collections (Sharing):
  POST   /api/v1/collections/{id}/share - Share collection
  DELETE /api/v1/collections/{id}/members/{user_id} - Remove member
  GET    /api/v1/collections/shared     - List shared collections

Collections (Operations):
  PUT    /api/v1/collections/{id}/archive  - Archive collection
  PUT    /api/v1/collections/{id}/restore  - Restore collection
  GET    /api/v1/collections/filtered      - Get filtered collections
  POST   /api/v1/collections/sync          - Sync collections

Files (Basic CRUD):
  POST   /api/v1/files/pending          - Create pending file
  POST   /api/v1/files/{id}/complete    - Complete file upload
  GET    /api/v1/files/{id}             - Get file by ID
  PUT    /api/v1/files/{id}             - Update file
  DELETE /api/v1/files/{id}             - Delete file
  POST   /api/v1/files/delete-multiple  - Delete multiple files

Files (Operations):
  GET    /api/v1/files/collection/{collection_id} - List files by collection
  GET    /api/v1/files/recent            - List recent files
  PUT    /api/v1/files/{id}/archive      - Archive file
  PUT    /api/v1/files/{id}/restore      - Restore file
  POST   /api/v1/files/sync              - Sync files

Files (Storage):
  GET    /api/v1/files/{id}/upload-url   - Get presigned upload URL
  GET    /api/v1/files/{id}/download-url - Get presigned download URL

Total Endpoints: ~47
*/

// RouteInfo represents information about a route
type RouteInfo struct {
	Method      string
	Path        string
	Description string
	Protected   bool
}

// GetAllRoutes returns a list of all available routes
func GetAllRoutes() []RouteInfo {
	return []RouteInfo{
		// Public routes
		{Method: "GET", Path: "/health", Description: "Health check", Protected: false},
		{Method: "GET", Path: "/version", Description: "Version information", Protected: false},
		{Method: "POST", Path: "/api/v1/auth/register", Description: "User registration", Protected: false},
		{Method: "POST", Path: "/api/v1/auth/login", Description: "User login", Protected: false},
		{Method: "POST", Path: "/api/v1/auth/refresh", Description: "Refresh JWT token", Protected: false},
		{Method: "POST", Path: "/api/v1/auth/logout", Description: "Logout", Protected: false},

		// Profile routes
		{Method: "GET", Path: "/api/v1/me", Description: "Get current user profile", Protected: true},
		{Method: "PUT", Path: "/api/v1/me", Description: "Update user profile", Protected: true},
		{Method: "DELETE", Path: "/api/v1/me", Description: "Delete user account", Protected: true},

		// Dashboard
		{Method: "GET", Path: "/api/v1/dashboard", Description: "Get dashboard data", Protected: true},

		// Collections
		{Method: "POST", Path: "/api/v1/collections", Description: "Create collection", Protected: true},
		{Method: "GET", Path: "/api/v1/collections", Description: "List collections", Protected: true},
		{Method: "GET", Path: "/api/v1/collections/{id}", Description: "Get collection", Protected: true},
		{Method: "PUT", Path: "/api/v1/collections/{id}", Description: "Update collection", Protected: true},
		{Method: "DELETE", Path: "/api/v1/collections/{id}", Description: "Delete collection", Protected: true},

		// Files
		{Method: "POST", Path: "/api/v1/files/pending", Description: "Create pending file", Protected: true},
		{Method: "POST", Path: "/api/v1/files/{id}/complete", Description: "Complete upload", Protected: true},
		{Method: "GET", Path: "/api/v1/files/{id}", Description: "Get file", Protected: true},
		{Method: "PUT", Path: "/api/v1/files/{id}", Description: "Update file", Protected: true},
		{Method: "DELETE", Path: "/api/v1/files/{id}", Description: "Delete file", Protected: true},

		// ... (More routes will be registered in Phase 6)
	}
}
