1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
//===----------------------------------------------------------------------===//
// DuckDB
//
// shell_progress_bar.hpp
//
//
//===----------------------------------------------------------------------===//
#pragma once
#include "duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp"
#include "shell_prompt.hpp"
namespace duckdb_shell {
struct ProgressBarPrompt;
struct ShellProgressBar {
friend class ShellProgressBarDisplay;
friend struct ProgressBarPrompt;
public:
ShellProgressBar();
~ShellProgressBar();
public:
void AddComponent(const string &text);
void ClearComponents();
string GenerateProgressBar(ShellState &state, idx_t terminal_width);
private:
vector<unique_ptr<ProgressBarPrompt>> components;
duckdb::ProgressBarDisplayInfo display_info;
int32_t percentage = 0;
double estimated_remaining_seconds = 0;
unique_ptr<duckdb::Connection> connection;
};
//! Displays a status bar alongside the progress bar
class ShellProgressBarDisplay : public duckdb::TerminalProgressBarDisplay {
public:
ShellProgressBarDisplay();
public:
void Finish() override;
protected:
void PrintProgressInternal(int32_t percentage, double estimated_remaining_seconds, bool is_finished) override;
private:
optional_idx previous_terminal_width;
};
} // namespace duckdb_shell
|