fix: resolve go vet linting issues
- Add WithField and WithFields methods to NullLogger to implement Logger interface - Change MenuModel to use pointer receivers to avoid copying sync.Once
This commit is contained in:
@@ -68,7 +68,7 @@ type MenuModel struct {
|
|||||||
closeOnce sync.Once
|
closeOnce sync.Once
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMenuModel(cfg *config.Config, log logger.Logger) MenuModel {
|
func NewMenuModel(cfg *config.Config, log logger.Logger) *MenuModel {
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
dbTypes := []dbTypeOption{
|
dbTypes := []dbTypeOption{
|
||||||
@@ -84,7 +84,7 @@ func NewMenuModel(cfg *config.Config, log logger.Logger) MenuModel {
|
|||||||
dbCursor = 2
|
dbCursor = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
model := MenuModel{
|
model := &MenuModel{
|
||||||
choices: []string{
|
choices: []string{
|
||||||
"Single Database Backup",
|
"Single Database Backup",
|
||||||
"Sample Database Backup (with ratio)",
|
"Sample Database Backup (with ratio)",
|
||||||
@@ -129,7 +129,7 @@ var _ io.Closer = (*MenuModel)(nil)
|
|||||||
type autoSelectMsg struct{}
|
type autoSelectMsg struct{}
|
||||||
|
|
||||||
// Init initializes the model
|
// Init initializes the model
|
||||||
func (m MenuModel) Init() tea.Cmd {
|
func (m *MenuModel) Init() tea.Cmd {
|
||||||
// Auto-select menu option if specified
|
// Auto-select menu option if specified
|
||||||
if m.config.TUIAutoSelect >= 0 && m.config.TUIAutoSelect < len(m.choices) {
|
if m.config.TUIAutoSelect >= 0 && m.config.TUIAutoSelect < len(m.choices) {
|
||||||
m.logger.Info("TUI Auto-select enabled", "option", m.config.TUIAutoSelect, "label", m.choices[m.config.TUIAutoSelect])
|
m.logger.Info("TUI Auto-select enabled", "option", m.config.TUIAutoSelect, "label", m.choices[m.config.TUIAutoSelect])
|
||||||
@@ -143,7 +143,7 @@ func (m MenuModel) Init() tea.Cmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update handles messages
|
// Update handles messages
|
||||||
func (m MenuModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
func (m *MenuModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
switch msg := msg.(type) {
|
switch msg := msg.(type) {
|
||||||
case autoSelectMsg:
|
case autoSelectMsg:
|
||||||
// Handle auto-selection
|
// Handle auto-selection
|
||||||
@@ -272,7 +272,7 @@ func (m MenuModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// View renders the simple menu
|
// View renders the simple menu
|
||||||
func (m MenuModel) View() string {
|
func (m *MenuModel) View() string {
|
||||||
if m.quitting {
|
if m.quitting {
|
||||||
return "Thanks for using DB Backup Tool!\n"
|
return "Thanks for using DB Backup Tool!\n"
|
||||||
}
|
}
|
||||||
@@ -328,19 +328,19 @@ func (m MenuModel) View() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// handleSingleBackup opens database selector for single backup
|
// handleSingleBackup opens database selector for single backup
|
||||||
func (m MenuModel) handleSingleBackup() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleSingleBackup() (tea.Model, tea.Cmd) {
|
||||||
selector := NewDatabaseSelector(m.config, m.logger, m, m.ctx, "🗄️ Single Database Backup", "single")
|
selector := NewDatabaseSelector(m.config, m.logger, m, m.ctx, "🗄️ Single Database Backup", "single")
|
||||||
return selector, selector.Init()
|
return selector, selector.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleSampleBackup opens database selector for sample backup
|
// handleSampleBackup opens database selector for sample backup
|
||||||
func (m MenuModel) handleSampleBackup() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleSampleBackup() (tea.Model, tea.Cmd) {
|
||||||
selector := NewDatabaseSelector(m.config, m.logger, m, m.ctx, "📊 Sample Database Backup", "sample")
|
selector := NewDatabaseSelector(m.config, m.logger, m, m.ctx, "📊 Sample Database Backup", "sample")
|
||||||
return selector, selector.Init()
|
return selector, selector.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleClusterBackup shows confirmation and executes cluster backup
|
// handleClusterBackup shows confirmation and executes cluster backup
|
||||||
func (m MenuModel) handleClusterBackup() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleClusterBackup() (tea.Model, tea.Cmd) {
|
||||||
if !m.config.IsPostgreSQL() {
|
if !m.config.IsPostgreSQL() {
|
||||||
m.message = errorStyle.Render("❌ Cluster backup is available only for PostgreSQL targets")
|
m.message = errorStyle.Render("❌ Cluster backup is available only for PostgreSQL targets")
|
||||||
return m, nil
|
return m, nil
|
||||||
@@ -356,38 +356,38 @@ func (m MenuModel) handleClusterBackup() (tea.Model, tea.Cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// handleViewOperations shows active operations
|
// handleViewOperations shows active operations
|
||||||
func (m MenuModel) handleViewOperations() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleViewOperations() (tea.Model, tea.Cmd) {
|
||||||
ops := NewOperationsView(m.config, m.logger, m)
|
ops := NewOperationsView(m.config, m.logger, m)
|
||||||
return ops, nil
|
return ops, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleOperationHistory shows operation history
|
// handleOperationHistory shows operation history
|
||||||
func (m MenuModel) handleOperationHistory() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleOperationHistory() (tea.Model, tea.Cmd) {
|
||||||
history := NewHistoryView(m.config, m.logger, m)
|
history := NewHistoryView(m.config, m.logger, m)
|
||||||
return history, nil
|
return history, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleStatus shows database status
|
// handleStatus shows database status
|
||||||
func (m MenuModel) handleStatus() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleStatus() (tea.Model, tea.Cmd) {
|
||||||
status := NewStatusView(m.config, m.logger, m)
|
status := NewStatusView(m.config, m.logger, m)
|
||||||
return status, status.Init()
|
return status, status.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleSettings opens settings
|
// handleSettings opens settings
|
||||||
func (m MenuModel) handleSettings() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleSettings() (tea.Model, tea.Cmd) {
|
||||||
// Create and return the settings model
|
// Create and return the settings model
|
||||||
settingsModel := NewSettingsModel(m.config, m.logger, m)
|
settingsModel := NewSettingsModel(m.config, m.logger, m)
|
||||||
return settingsModel, nil
|
return settingsModel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleRestoreSingle opens archive browser for single restore
|
// handleRestoreSingle opens archive browser for single restore
|
||||||
func (m MenuModel) handleRestoreSingle() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleRestoreSingle() (tea.Model, tea.Cmd) {
|
||||||
browser := NewArchiveBrowser(m.config, m.logger, m, m.ctx, "restore-single")
|
browser := NewArchiveBrowser(m.config, m.logger, m, m.ctx, "restore-single")
|
||||||
return browser, browser.Init()
|
return browser, browser.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleRestoreCluster opens archive browser for cluster restore
|
// handleRestoreCluster opens archive browser for cluster restore
|
||||||
func (m MenuModel) handleRestoreCluster() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleRestoreCluster() (tea.Model, tea.Cmd) {
|
||||||
if !m.config.IsPostgreSQL() {
|
if !m.config.IsPostgreSQL() {
|
||||||
m.message = errorStyle.Render("❌ Cluster restore is available only for PostgreSQL")
|
m.message = errorStyle.Render("❌ Cluster restore is available only for PostgreSQL")
|
||||||
return m, nil
|
return m, nil
|
||||||
@@ -397,7 +397,7 @@ func (m MenuModel) handleRestoreCluster() (tea.Model, tea.Cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// handleBackupManager opens backup management view
|
// handleBackupManager opens backup management view
|
||||||
func (m MenuModel) handleBackupManager() (tea.Model, tea.Cmd) {
|
func (m *MenuModel) handleBackupManager() (tea.Model, tea.Cmd) {
|
||||||
manager := NewBackupManager(m.config, m.logger, m, m.ctx)
|
manager := NewBackupManager(m.config, m.logger, m, m.ctx)
|
||||||
return manager, manager.Init()
|
return manager, manager.Init()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user