236 lines
5.9 KiB
Markdown
236 lines
5.9 KiB
Markdown
|
|
# Warnings Cleanup Summary
|
||
|
|
|
||
|
|
## Current Status: Clean Build Required
|
||
|
|
|
||
|
|
**Date**: 2024
|
||
|
|
**Task**: Remove all unused code warnings WITHOUT using `#[allow(dead_code)]`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ❌ DO NOT DO THIS
|
||
|
|
|
||
|
|
```rust
|
||
|
|
#[allow(dead_code)] // NO! This just hides the problem
|
||
|
|
pub fn unused_function() { ... }
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ DO THIS INSTEAD
|
||
|
|
|
||
|
|
1. **Create API endpoints** for unused service methods
|
||
|
|
2. **Remove** truly unused code
|
||
|
|
3. **Document** why code that appears unused is actually used (trait dispatch, internal usage)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Warnings Analysis
|
||
|
|
|
||
|
|
### 1. ✅ FALSE POSITIVES (Keep As-Is)
|
||
|
|
|
||
|
|
These warnings are incorrect - the code IS used:
|
||
|
|
|
||
|
|
#### **DriveMonitor** (`src/drive_monitor/mod.rs`)
|
||
|
|
- **Status**: ACTIVELY USED
|
||
|
|
- **Usage**: Created in `BotOrchestrator`, monitors .gbdialog file changes
|
||
|
|
- **Why warned**: Compiler doesn't detect usage in async spawn
|
||
|
|
- **Action**: NONE - working as intended
|
||
|
|
|
||
|
|
#### **BasicCompiler** (`src/basic/compiler/mod.rs`)
|
||
|
|
- **Status**: ACTIVELY USED
|
||
|
|
- **Usage**: Called by DriveMonitor to compile .bas files
|
||
|
|
- **Why warned**: Structures used via internal API
|
||
|
|
- **Action**: NONE - working as intended
|
||
|
|
|
||
|
|
#### **ChannelAdapter trait methods** (`src/channels/mod.rs`)
|
||
|
|
- **Status**: USED VIA POLYMORPHISM
|
||
|
|
- **Usage**: Called through `dyn ChannelAdapter` trait objects
|
||
|
|
- **Why warned**: Compiler doesn't detect trait dispatch usage
|
||
|
|
- **Action**: NONE - this is how traits work
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. 🔧 NEEDS API ENDPOINTS
|
||
|
|
|
||
|
|
These are implemented services that need REST API endpoints:
|
||
|
|
|
||
|
|
#### **Meet Service** (`src/meet/service.rs`)
|
||
|
|
|
||
|
|
**Unused Methods**:
|
||
|
|
- `join_room()`
|
||
|
|
- `start_transcription()`
|
||
|
|
- `get_room()`
|
||
|
|
- `list_rooms()`
|
||
|
|
|
||
|
|
**TODO**: Add in `src/main.rs`:
|
||
|
|
```rust
|
||
|
|
.route("/api/meet/rooms", get(crate::meet::list_rooms_handler))
|
||
|
|
.route("/api/meet/room/:room_id", get(crate::meet::get_room_handler))
|
||
|
|
.route("/api/meet/room/:room_id/join", post(crate::meet::join_room_handler))
|
||
|
|
.route("/api/meet/room/:room_id/transcription/start", post(crate::meet::start_transcription_handler))
|
||
|
|
```
|
||
|
|
|
||
|
|
Then create handlers in `src/meet/mod.rs`.
|
||
|
|
|
||
|
|
#### **Multimedia Service** (`src/bot/multimedia.rs`)
|
||
|
|
|
||
|
|
**Unused Methods**:
|
||
|
|
- `upload_media()`
|
||
|
|
- `download_media()`
|
||
|
|
- `generate_thumbnail()`
|
||
|
|
|
||
|
|
**TODO**: Add in `src/main.rs`:
|
||
|
|
```rust
|
||
|
|
.route("/api/media/upload", post(crate::bot::multimedia::upload_handler))
|
||
|
|
.route("/api/media/download/:media_id", get(crate::bot::multimedia::download_handler))
|
||
|
|
.route("/api/media/thumbnail/:media_id", get(crate::bot::multimedia::thumbnail_handler))
|
||
|
|
```
|
||
|
|
|
||
|
|
Then create handlers in `src/bot/multimedia.rs` or `src/api/media.rs`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. 🔐 AUTH NEEDS COMPLETION
|
||
|
|
|
||
|
|
#### **Zitadel Auth** (`src/auth/zitadel.rs`)
|
||
|
|
|
||
|
|
**Partially Implemented**:
|
||
|
|
- ✅ OAuth flow works
|
||
|
|
- ❌ Token refresh not exposed
|
||
|
|
- ❌ Token verification not used in middleware
|
||
|
|
|
||
|
|
**TODO**:
|
||
|
|
|
||
|
|
1. **Add refresh endpoint**:
|
||
|
|
```rust
|
||
|
|
// src/auth/mod.rs
|
||
|
|
pub async fn refresh_token_handler(
|
||
|
|
State(state): State<Arc<AppState>>,
|
||
|
|
Json(payload): Json<RefreshRequest>,
|
||
|
|
) -> impl IntoResponse {
|
||
|
|
// Call zitadel.refresh_token()
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Add auth middleware** (optional but recommended):
|
||
|
|
```rust
|
||
|
|
// src/auth/middleware.rs (new file)
|
||
|
|
pub async fn require_auth(...) -> Result<Response, StatusCode> {
|
||
|
|
// Use zitadel.verify_token() to validate JWT
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Add to routes**:
|
||
|
|
```rust
|
||
|
|
.route("/api/auth/refresh", post(refresh_token_handler))
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. 🗑️ CAN BE REMOVED
|
||
|
|
|
||
|
|
#### **Config unused fields** (`src/config/mod.rs`)
|
||
|
|
|
||
|
|
Some fields in `EmailConfig` may not be read. Need to:
|
||
|
|
1. Check if `AppConfig::from_database()` reads them
|
||
|
|
2. If not, remove the unused fields
|
||
|
|
|
||
|
|
#### **extract_user_id_from_token()** (`src/auth/zitadel.rs`)
|
||
|
|
|
||
|
|
Can be replaced with proper JWT parsing inside `verify_token()`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 5. 📦 INFRASTRUCTURE CODE (Keep)
|
||
|
|
|
||
|
|
#### **Email Setup** (`src/package_manager/setup/email_setup.rs`)
|
||
|
|
|
||
|
|
**Status**: USED IN BOOTSTRAP
|
||
|
|
- Called during initial setup/bootstrap
|
||
|
|
- Not API code, infrastructure code
|
||
|
|
- Keep as-is
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Action Plan
|
||
|
|
|
||
|
|
### Phase 1: Fix Compilation Errors ✅
|
||
|
|
- [x] Fix multimedia.rs field name mismatches
|
||
|
|
- [ ] Fix vectordb_indexer.rs import errors
|
||
|
|
- [ ] Fix add_kb.rs import/diesel errors
|
||
|
|
|
||
|
|
### Phase 2: Add Missing API Endpoints
|
||
|
|
1. [ ] Meet service endpoints (30 min)
|
||
|
|
2. [ ] Multimedia service endpoints (30 min)
|
||
|
|
3. [ ] Auth refresh endpoint (15 min)
|
||
|
|
|
||
|
|
### Phase 3: Document False Positives
|
||
|
|
1. [ ] Add doc comments explaining trait dispatch usage
|
||
|
|
2. [ ] Add doc comments explaining internal usage patterns
|
||
|
|
|
||
|
|
### Phase 4: Remove Truly Unused
|
||
|
|
1. [ ] Clean up config unused fields
|
||
|
|
2. [ ] Remove `extract_user_id_from_token()` if unused
|
||
|
|
|
||
|
|
### Phase 5: Test
|
||
|
|
```bash
|
||
|
|
cargo check # Should have 0 warnings
|
||
|
|
cargo test # All tests pass
|
||
|
|
cargo clippy # No new issues
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Guidelines for Future
|
||
|
|
|
||
|
|
### When You See "Warning: never used"
|
||
|
|
|
||
|
|
1. **Search for usage first**:
|
||
|
|
```bash
|
||
|
|
grep -r "function_name" src/
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Check if it's a trait method**:
|
||
|
|
- Trait methods are often used via `dyn Trait`
|
||
|
|
- Compiler can't detect this usage
|
||
|
|
- Keep it if the trait is used
|
||
|
|
|
||
|
|
3. **Check if it's called via macro or reflection**:
|
||
|
|
- Diesel, Serde, etc. use derive macros
|
||
|
|
- Fields might be used without direct code reference
|
||
|
|
- Keep it if derives reference it
|
||
|
|
|
||
|
|
4. **Is it a public API method?**:
|
||
|
|
- Add REST endpoint
|
||
|
|
- Or mark method as `pub(crate)` or `pub` if it's library code
|
||
|
|
|
||
|
|
5. **Is it truly unused?**:
|
||
|
|
- Remove it
|
||
|
|
- Don't hide it with `#[allow(dead_code)]`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Success Criteria
|
||
|
|
|
||
|
|
✅ `cargo check` produces 0 warnings
|
||
|
|
✅ All functionality still works
|
||
|
|
✅ No `#[allow(dead_code)]` attributes added
|
||
|
|
✅ All service methods accessible via API
|
||
|
|
✅ Tests pass
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Current Warning Count
|
||
|
|
|
||
|
|
Before cleanup: ~31 warnings
|
||
|
|
Target: 0 warnings
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- Meet service and multimedia service are complete implementations waiting for API exposure
|
||
|
|
- Auth service is functional but missing refresh token endpoint
|
||
|
|
- Most "unused" warnings are false positives from trait dispatch
|
||
|
|
- DriveMonitor is actively monitoring file changes in background
|
||
|
|
- BasicCompiler is actively compiling .bas files from .gbdialog folders
|