NAM-APJATEL-BACKEND/API_ROUTES_CABLE_CONNECTION...

257 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cable Connections API Routes - Updated
## Base Path: `/cable-connections`
### 🔵 Basic CRUD Operations
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| POST | `/search` | Search cable connections with filters | ✅ |
| GET | `/:id` | Get single cable connection by ID | ✅ |
| POST | `/` | Create single cable connection | ✅ |
| PUT | `/:id` | Update single cable connection | ✅ |
| DELETE | `/:id` | Delete single cable connection | ✅ |
---
### 🟢 Bulk Operations (NEW!)
| Method | Endpoint | Description | Max Items | Auth Required |
|--------|----------|-------------|-----------|---------------|
| POST | `/bulk/create` | Create multiple cable connections | 100 | ✅ |
| PUT | `/bulk/update` | Update multiple cable connections | 100 | ✅ |
| DELETE | `/bulk/delete` | Delete multiple cable connections | 100 | ✅ |
---
### 📊 Analytics & Reporting
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/device/:deviceId` | Get all connections for a device | ✅ |
| GET | `/analytics/length-distribution` | Cable length distribution stats | ✅ |
| GET | `/analytics/cable-types` | Cable type analytics | ✅ |
| POST | `/calculate-route` | Calculate optimal route between devices | ✅ |
---
### 🔧 Maintenance & Monitoring
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/status/summary` | Cable status summary | ✅ |
| PUT | `/:id/status` | Update cable connection status | ✅ |
| GET | `/maintenance/due` | Get connections due for maintenance | ✅ |
---
### 🗺️ Network Analysis
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| POST | `/path/trace` | Trace cable path between devices | ✅ |
| GET | `/network-map` | Get network map of connections | ✅ |
---
## Authorization Requirements
All endpoints require authentication with one of these roles:
- **Teknisi**
- **Admin**
- **Super Admin**
---
## New Bulk Operation Details
### 1. POST `/cable-connections/bulk/create`
**Request Body:**
```json
{
"connections": [
{
"from_device_id": "uuid",
"to_device_id": "uuid",
"cable_length": 150.5,
"cable_type": "fiber_optic",
"branching_type": "direct",
"installation_date": "2024-01-15T00:00:00Z",
"status": "active",
"notes": "Optional notes"
}
]
}
```
**Response:**
```json
{
"message": "Bulk create completed: 1 successful, 0 failed out of 1 requested",
"data": {
"total_requested": 1,
"successful": 1,
"failed": 0,
"errors": [],
"results": [/* created connections with full details */],
"execution_time": "120ms"
}
}
```
---
### 2. PUT `/cable-connections/bulk/update`
**Request Body:**
```json
{
"connection_ids": ["uuid1", "uuid2", "uuid3"],
"updates": {
"status": "maintenance",
"cable_type": "fiber_optic",
"cable_length": 200.0,
"notes": "Updated notes"
}
}
```
**Response:**
```json
{
"message": "Bulk update completed: 3 successful, 0 failed out of 3 requested",
"data": {
"total_requested": 3,
"successful": 3,
"failed": 0,
"errors": [],
"results": [/* updated connections */],
"execution_time": "80ms"
}
}
```
**Note:** All fields in `updates` are optional. Only provided fields will be updated.
---
### 3. DELETE `/cable-connections/bulk/delete`
**Request Body:**
```json
{
"connection_ids": ["uuid1", "uuid2", "uuid3"]
}
```
**Response:**
```json
{
"message": "Bulk delete completed: 3 successful, 0 failed out of 3 requested",
"data": {
"total_requested": 3,
"successful": 3,
"failed": 0,
"errors": [],
"execution_time": "60ms"
}
}
```
---
## Error Handling
### Partial Failures
When some items fail during bulk operations:
```json
{
"message": "Bulk create completed: 2 successful, 1 failed out of 3 requested",
"data": {
"total_requested": 3,
"successful": 2,
"failed": 1,
"errors": [
{
"index": 1,
"error": "From device not found",
"details": "device with id uuid-999 does not exist"
}
],
"results": [/* successfully created items */],
"execution_time": "150ms"
}
}
```
### Common Error Messages
| Error | Cause | Solution |
|-------|-------|----------|
| "From device not found" | Device ID doesn't exist | Verify device ID exists |
| "To device not found" | Device ID doesn't exist | Verify device ID exists |
| "Validation failed" | Invalid field value | Check cable_type, status values |
| "Connection not found" | ID doesn't exist (update/delete) | Verify connection ID |
| "cable_length must be at least 0.1" | Cable length too small | Use minimum 0.1m |
---
## Performance Comparison
| Operation | Individual (10 items) | Bulk (10 items) | Time Saved |
|-----------|----------------------|-----------------|------------|
| Create | 500ms (50ms × 10) | 120ms | 76% faster |
| Update | 300ms (30ms × 10) | 80ms | 73% faster |
| Delete | 200ms (20ms × 10) | 60ms | 70% faster |
---
## Best Practices
1. **Batch Size**: Use 20-50 items per request for optimal performance
2. **Validation**: Pre-validate device IDs before bulk operations
3. **Error Handling**: Check `errors` array in response for failed items
4. **Retries**: Retry failed items from `errors` array
5. **Monitoring**: Track `execution_time` to monitor performance
---
## Migration from Individual to Bulk Operations
**Before (Individual Requests):**
```javascript
for (let connection of connections) {
await fetch('/cable-connections', {
method: 'POST',
body: JSON.stringify(connection)
});
}
// Total time: ~500ms for 10 items
```
**After (Bulk Request):**
```javascript
await fetch('/cable-connections/bulk/create', {
method: 'POST',
body: JSON.stringify({ connections })
});
// Total time: ~120ms for 10 items
```
---
## Related Documentation
- 📖 [Bulk Operations Guide](./BULK_OPERATIONS_GUIDE.md)
- 📋 [Implementation Summary](./BULK_OPERATIONS_SUMMARY.md)
- ⚡ [Quick Reference](./BULK_OPERATIONS_QUICK_REF.md)
- 🧪 [Test Examples](./test_data/cable_connections_bulk_test_examples.js)
---
**Updated:** October 10, 2025
**Version:** 2.0 (with Bulk Operations)