mirror of
https://github.com/StarFleetCPTN/GoMFT.git
synced 2026-10-24 15:00:26 +02:00
feat: Implement storage provider management functionality
- Added new routes and handlers for managing storage providers, including creation, editing, and deletion. - Introduced a new StorageProvider form component for user input. - Enhanced the database schema to support storage provider references in transfer configurations. - Implemented encryption for sensitive fields in storage provider data. - Added tests for storage provider API endpoints and integration with the database. - Updated frontend components to support storage provider selection and testing.
This commit is contained in:
1 parent
88d0ac815a
commit
31871bd16e
59 files changed
+15842
-594
No files matched your search
@@ -0,0 +1,66 @@
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"github.com/go-gormigrate/gormigrate/v2"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// AddStorageProviders adds the storage_providers table
|
||||
func AddStorageProviders() *gormigrate.Migration {
|
||||
return &gormigrate.Migration{
|
||||
ID: "014_add_storage_providers",
|
||||
Migrate: func(tx *gorm.DB) error {
|
||||
// Create the storage_providers table
|
||||
if err := tx.Exec(`CREATE TABLE IF NOT EXISTS storage_providers (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
host VARCHAR(255),
|
||||
port INTEGER DEFAULT 22,
|
||||
username VARCHAR(255),
|
||||
encrypted_password TEXT,
|
||||
key_file TEXT,
|
||||
bucket VARCHAR(255),
|
||||
region VARCHAR(255),
|
||||
access_key VARCHAR(255),
|
||||
encrypted_secret_key TEXT,
|
||||
endpoint VARCHAR(255),
|
||||
share VARCHAR(255),
|
||||
domain VARCHAR(255),
|
||||
passive_mode BOOLEAN DEFAULT TRUE,
|
||||
client_id VARCHAR(255),
|
||||
encrypted_client_secret TEXT,
|
||||
encrypted_refresh_token TEXT,
|
||||
drive_id VARCHAR(255),
|
||||
team_drive VARCHAR(255),
|
||||
read_only BOOLEAN DEFAULT FALSE,
|
||||
start_year INTEGER,
|
||||
include_archived BOOLEAN DEFAULT FALSE,
|
||||
use_builtin_auth BOOLEAN DEFAULT TRUE,
|
||||
authenticated BOOLEAN DEFAULT FALSE,
|
||||
created_by INTEGER NOT NULL,
|
||||
created_at DATETIME,
|
||||
updated_at DATETIME,
|
||||
FOREIGN KEY (created_by) REFERENCES users(id),
|
||||
UNIQUE(name, created_by)
|
||||
)`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Create index on type for faster filtering
|
||||
if err := tx.Exec(`CREATE INDEX idx_storage_providers_type ON storage_providers(type)`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
Rollback: func(tx *gorm.DB) error {
|
||||
// Drop the storage_providers table
|
||||
if err := tx.Exec(`DROP TABLE IF EXISTS storage_providers`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"github.com/go-gormigrate/gormigrate/v2"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// AddProviderRefsToTransferConfig adds the storage provider reference fields to the transfer_configs table
|
||||
func AddProviderRefsToTransferConfig() *gormigrate.Migration {
|
||||
return &gormigrate.Migration{
|
||||
ID: "015_add_provider_refs_to_transfer_config",
|
||||
Migrate: func(tx *gorm.DB) error {
|
||||
// Add source_provider_id and destination_provider_id columns to transfer_configs table
|
||||
if err := tx.Exec(`ALTER TABLE transfer_configs ADD COLUMN source_provider_id INTEGER REFERENCES storage_providers(id)`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := tx.Exec(`ALTER TABLE transfer_configs ADD COLUMN destination_provider_id INTEGER REFERENCES storage_providers(id)`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Create indexes for better performance when joining with the storage_providers table
|
||||
if err := tx.Exec(`CREATE INDEX idx_transfer_configs_source_provider_id ON transfer_configs(source_provider_id)`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := tx.Exec(`CREATE INDEX idx_transfer_configs_destination_provider_id ON transfer_configs(destination_provider_id)`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
Rollback: func(tx *gorm.DB) error {
|
||||
// Drop indexes first
|
||||
if err := tx.Exec(`DROP INDEX IF EXISTS idx_transfer_configs_source_provider_id`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := tx.Exec(`DROP INDEX IF EXISTS idx_transfer_configs_destination_provider_id`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Remove columns
|
||||
if err := tx.Exec(`ALTER TABLE transfer_configs DROP COLUMN source_provider_id`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := tx.Exec(`ALTER TABLE transfer_configs DROP COLUMN destination_provider_id`).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,8 @@ func GetMigrations(db *gorm.DB) *gormigrate.Gormigrate {
|
||||
RecoverNotificationServicesRename(), // 012b
|
||||
RecoverAuthProvidersRename(), // 012c
|
||||
CleanupInvalidBooleans(), // 013
|
||||
AddStorageProviders(), // 014
|
||||
AddProviderRefsToTransferConfig(), // 015
|
||||
)
|
||||
|
||||
return gormigrate.New(db, gormigrate.DefaultOptions, migrations)
|
||||
|
||||
Reference in new issue
Block a user