* Analytics request loader and game version validation * tweak agents * factor tags into its own util * lock cache refresh to avoid cache stampede * Make analytics fields opptional
1.4 KiB
1.4 KiB
- Use
ApiErroras the error type for API routes - Prefer
ApiError::InternalandApiError::RequestoverApiError::InvalidInput- Use
eyre!to construct a value forInternalandRequestvariants
- Use
- Error messages (both for errors and exceptions) must be formatted as per the Rust API guidelines:
- lowercase message
- no trailing punctuation
- wrap code items e.g. type names in backticks
- Prefer
wrap_internal_err,wrap_request_errwhen attaching context to an existing error (like Anyhowcontextor Eyrewrap_err) - All operations should ideally have some context attached
- Database operations can have a message like
.wrap_internal_err("failed to fetch XYZ")
- Database operations can have a message like
- You can perform real-time queries against the databases in the Docker Compose
docker exec labrinth-postgres psql -c "select 1"docker exec labrinth-redis redis-cli flushalldocker exec labrinth-clickhouse clickhouse-client "select 1"- On some machines, you may have to use
podmaninstead ofdocker- check which one is available first
- Hardcoded credentials for admin:
Authorization: Bearer mra_adminfor default admin userAuthorization: Bearer mra_userfor a regular userModrinth-Admin: feedbeefas admin key
- If some steps require you to create a project/mod or version for testing, ask the user to go into the web frontend and manually create a project/version