lemm-test-100 / backend /utils /validators.py
Gamahea
Deploy Music Generation Studio - 2025-12-12 16:01
aad9d66
raw
history blame
1.91 kB
"""
Request validation utilities
"""
from typing import Dict, Optional
def validate_generation_params(data: Dict) -> Optional[str]:
"""
Validate music generation parameters
Args:
data: Request data dictionary
Returns:
Error message if validation fails, None otherwise
"""
if not data:
return "Request body is required"
if 'prompt' not in data:
return "Missing required field: prompt"
if not data['prompt'] or not data['prompt'].strip():
return "Prompt cannot be empty"
if 'duration' in data:
duration = data['duration']
if not isinstance(duration, (int, float)):
return "Duration must be a number"
if duration < 10 or duration > 120:
return "Duration must be between 10 and 120 seconds"
if 'use_vocals' in data:
if not isinstance(data['use_vocals'], bool):
return "use_vocals must be a boolean"
if data['use_vocals'] and not data.get('lyrics'):
return "Lyrics are required when use_vocals is true"
return None
def validate_clip_data(data: Dict) -> Optional[str]:
"""
Validate timeline clip data
Args:
data: Clip data dictionary
Returns:
Error message if validation fails, None otherwise
"""
required_fields = ['clip_id', 'file_path', 'duration', 'position']
for field in required_fields:
if field not in data:
return f"Missing required field: {field}"
if not isinstance(data['duration'], (int, float)) or data['duration'] <= 0:
return "Duration must be a positive number"
valid_positions = ['intro', 'previous', 'next', 'outro']
if data['position'] not in valid_positions:
return f"Invalid position. Must be one of: {', '.join(valid_positions)}"
return None