FIXED: TUI progess status and creating tar archive
This commit is contained in:
@ -61,7 +61,18 @@ func (m BackupExecutionModel) Init() tea.Cmd {
|
||||
})
|
||||
})
|
||||
|
||||
return executeBackupWithTUIProgress(m.config, m.logger, m.backupType, m.databaseName, m.ratio, reporter)
|
||||
return tea.Batch(
|
||||
executeBackupWithTUIProgress(m.config, m.logger, m.backupType, m.databaseName, m.ratio, reporter),
|
||||
backupTickCmd(),
|
||||
)
|
||||
}
|
||||
|
||||
type backupTickMsg time.Time
|
||||
|
||||
func backupTickCmd() tea.Cmd {
|
||||
return tea.Tick(time.Millisecond*100, func(t time.Time) tea.Msg {
|
||||
return backupTickMsg(t)
|
||||
})
|
||||
}
|
||||
|
||||
type backupProgressMsg struct {
|
||||
@ -142,6 +153,12 @@ func executeBackupWithTUIProgress(cfg *config.Config, log logger.Logger, backupT
|
||||
|
||||
func (m BackupExecutionModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
switch msg := msg.(type) {
|
||||
case backupTickMsg:
|
||||
if !m.done {
|
||||
return m, backupTickCmd()
|
||||
}
|
||||
return m, nil
|
||||
|
||||
case backupProgressMsg:
|
||||
m.status = msg.status
|
||||
m.progress = msg.progress
|
||||
|
||||
@ -37,7 +37,18 @@ func NewStatusView(cfg *config.Config, log logger.Logger, parent tea.Model) Stat
|
||||
}
|
||||
|
||||
func (m StatusViewModel) Init() tea.Cmd {
|
||||
return fetchStatus(m.config, m.logger)
|
||||
return tea.Batch(
|
||||
fetchStatus(m.config, m.logger),
|
||||
tickCmd(),
|
||||
)
|
||||
}
|
||||
|
||||
type tickMsg time.Time
|
||||
|
||||
func tickCmd() tea.Cmd {
|
||||
return tea.Tick(time.Millisecond*100, func(t time.Time) tea.Msg {
|
||||
return tickMsg(t)
|
||||
})
|
||||
}
|
||||
|
||||
type statusMsg struct {
|
||||
@ -98,6 +109,12 @@ func fetchStatus(cfg *config.Config, log logger.Logger) tea.Cmd {
|
||||
|
||||
func (m StatusViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
switch msg := msg.(type) {
|
||||
case tickMsg:
|
||||
if m.loading {
|
||||
return m, tickCmd()
|
||||
}
|
||||
return m, nil
|
||||
|
||||
case statusMsg:
|
||||
m.loading = false
|
||||
if msg.status != "" {
|
||||
|
||||
Reference in New Issue
Block a user