6.4 KiB
6.4 KiB
Template Version History
Overview
The Template Version History feature allows you to track, manage, and restore previous versions of your notification templates. This provides a complete audit trail and the ability to revert changes when needed.
Features
1. Automatic Version Creation
- Every time you update a template, a new version is automatically created
- Version numbers follow a semantic versioning pattern (e.g., 1.0, 1.1, 1.2)
- Each version includes a complete snapshot of the template at that point in time
2. Version History View
- Access version history by clicking the "Version History" icon in the template list
- View all versions of a template in chronological order
- See version numbers, change descriptions, and timestamps
- Current version is clearly highlighted
3. Version Restoration
- Restore any previous version of a template
- Restoration creates a new version (doesn't overwrite history)
- Automatic backup of current state before restoration
4. Version Deletion
- Delete old versions that are no longer needed
- Protection against deleting the current version
- Protection against deleting the only version
Database Schema
notification_template_versions Table
| Field | Type | Description |
|---|---|---|
| id | varchar(36) | Primary key (UUID) |
| template_id | varchar(36) | Reference to the main template |
| version | varchar(20) | Version number (e.g., "1.0", "1.1") |
| name | varchar(100) | Template name at this version |
| description | text | Template description |
| subject | varchar(255) | Email subject line |
| email_content | text | Email content/body |
| push_title | varchar(100) | Push notification title |
| push_body | varchar(300) | Push notification body |
| category | varchar(50) | Template category |
| channels | json | Supported channels array |
| status | varchar(20) | Template status (Draft, Active, Archived) |
| change_description | text | Description of what changed |
| is_current | boolean | Whether this is the current version |
| created_by | varchar(36) | User who created this version |
| created_at | timestamp | When this version was created |
API Endpoints
Get Version History
GET /api/notifications/templates/{id}/versions
Response:
{
"success": true,
"data": {
"templateId": "template-uuid",
"templateName": "Template Name",
"versions": [
{
"id": "version-uuid",
"version": "1.2",
"name": "Template Name",
"changeDescription": "Updated welcome message",
"isCurrent": false,
"status": "Active",
"formattedCreatedAt": "03/20/2024, 02:30 PM"
}
],
"totalCount": 3
}
}
Restore Version
POST /api/notifications/templates/{id}/versions/{versionId}/restore
Response:
{
"success": true,
"data": {
"message": "Version 1.1 has been restored successfully as version 1.3",
"templateId": "template-uuid",
"restoredVersion": "1.1",
"newVersion": "1.3"
}
}
Delete Version
DELETE /api/notifications/templates/{id}/versions/{versionId}
Response:
{
"success": true,
"data": {
"message": "Version 1.1 has been deleted successfully",
"templateId": "template-uuid",
"deletedVersion": "1.1"
}
}
How to Use
1. Setup Database
Run the migration to create the version history table:
node scripts/run-migration.js
Or manually run the SQL migration file:
mysql -u your_username -p your_database < database/migrations/003_create_template_version_history.sql
2. Update Prisma Schema
After running the migration, update your Prisma client:
npx prisma generate
3. Using the Frontend
View Version History
- Go to the notification templates page
- Find the template you want to view history for
- Click the "Version History" icon in the actions column
- The version history modal will open showing all versions
Restore a Version
- Open the version history modal
- Find the version you want to restore
- Click the "Restore" button for that version
- Confirm the restoration in the popup dialog
- The version will be restored as a new version
Delete a Version
- Open the version history modal
- Find the version you want to delete
- Click the "Delete" button for that version
- Confirm the deletion in the popup dialog
- The version will be permanently deleted
Best Practices
1. Version Naming
- Use semantic versioning (major.minor format)
- Increment minor version for small changes
- Increment major version for significant changes
2. Change Descriptions
- Always provide meaningful change descriptions
- Include what was changed and why
- Be specific about the modifications made
3. Version Management
- Regularly clean up old versions that are no longer needed
- Keep important milestone versions
- Don't delete versions that might be needed for compliance or audit
4. Testing
- Test templates thoroughly before making them active
- Use draft status for work-in-progress templates
- Restore previous versions if issues are found
Security Considerations
1. Access Control
- Only authenticated users can access version history
- Users can only manage versions of templates they have access to
- Audit logs track all version operations
2. Data Protection
- All version data is stored securely in the database
- Sensitive information in templates is handled according to your data protection policies
- Regular backups include version history data
3. Validation
- All version operations are validated before execution
- Protection against malicious version manipulation
- Proper error handling for failed operations
Troubleshooting
Common Issues
-
Version History Not Loading
- Check database connection
- Verify the template exists
- Check API endpoint responses
-
Restore Failing
- Ensure you have proper permissions
- Check if the version exists
- Verify template is not locked
-
Delete Failing
- Cannot delete current version
- Cannot delete if it's the only version
- Check user permissions
Debug Steps
- Check browser console for errors
- Verify API responses
- Check database logs
- Confirm user authentication
Future Enhancements
- Version comparison view
- Bulk version operations
- Version export/import
- Advanced filtering and search
- Version approval workflows
- Automated version cleanup policies