Files
bamort/backend/transfero/README.md
T

87 lines
2.5 KiB
Markdown
Raw Normal View History

2025-12-29 22:01:42 +01:00
# Transfer Package
2026-01-01 23:35:24 +01:00
The transfer package handles exporting and importing of characters and complete database content.
## Features
### Character Export/Import
- Export single characters with all related data (skills, spells, equipment, etc.)
- Import characters from JSON with automatic GSMaster data reconciliation
- Download characters as JSON files
### Database Export/Import
- Export complete database to JSON file
- Import complete database from JSON file
- All database tables included (users, characters, skills, equipment, learning data, etc.)
- Stored in `./backend/export_temp` directory
## API Endpoints
### Character Operations
- `GET /api/transfer/export/:id` - Export character as JSON (API response)
- `GET /api/transfer/download/:id` - Download character as JSON file
- `POST /api/transfer/import` - Import character from JSON
### Database Operations
- `POST /api/transfer/database/export` - Export complete database
- `POST /api/transfer/database/import` - Import complete database
## Usage Examples
### Export Database
```bash
curl -X POST http://localhost:8180/api/transfer/database/export \
-H "Authorization: Bearer YOUR_TOKEN"
```
Response:
```json
{
"message": "Database exported successfully",
"filename": "database_export_20260101_120000.json",
"filepath": "./backend/export_temp/database_export_20260101_120000.json",
"record_count": 1234,
"timestamp": "2026-01-01T12:00:00Z"
}
```
### Import Database
```bash
curl -X POST http://localhost:8180/api/transfer/database/import \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filepath": "./backend/export_temp/database_export_20260101_120000.json"
}'
```
Response:
```json
{
"message": "Database imported successfully",
"record_count": 1234,
"timestamp": "2026-01-01T12:00:01Z"
}
```
## Technical Details
### Database Export Format
The export includes all tables:
- Users
- Characters (with all relations: Eigenschaften, Lps, Aps, etc.)
- Skills (SkFertigkeiten, SkWaffenfertigkeiten, SkZauber)
- Equipment (EqAusruestungen, EqWaffen, EqContainers)
- GSMaster data (Skills, WeaponSkills, Spells, Equipment, Weapons, etc.)
- Learning data (Sources, CharacterClasses, SkillCategories, etc.)
- Audit log entries
### Import Behavior
- Uses `Save()` for upsert logic (updates existing records, creates new ones)
- Maintains referential integrity
- Wrapped in transaction (all-or-nothing)
## Testing
All functionality is fully tested with TDD approach:
```bash
go test -v ./transfer/
```