should be it
This commit is contained in:
76
external/duckdb/tools/shell/include/shell_renderer.hpp
vendored
Normal file
76
external/duckdb/tools/shell/include/shell_renderer.hpp
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
// DuckDB
|
||||
//
|
||||
// shell_renderer.hpp
|
||||
//
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shell_state.hpp"
|
||||
|
||||
namespace duckdb_shell {
|
||||
struct ShellState;
|
||||
|
||||
class ShellRenderer {
|
||||
public:
|
||||
explicit ShellRenderer(ShellState &state);
|
||||
virtual ~ShellRenderer() = default;
|
||||
|
||||
ShellState &state;
|
||||
bool show_header;
|
||||
string col_sep;
|
||||
string row_sep;
|
||||
|
||||
public:
|
||||
static bool IsColumnar(RenderMode mode);
|
||||
};
|
||||
|
||||
struct ColumnarResult {
|
||||
idx_t column_count = 0;
|
||||
vector<string> data;
|
||||
vector<int> types;
|
||||
vector<idx_t> column_width;
|
||||
vector<bool> right_align;
|
||||
vector<const char *> type_names;
|
||||
};
|
||||
|
||||
struct RowResult {
|
||||
vector<const char *> column_names;
|
||||
vector<const char *> data;
|
||||
vector<int> types;
|
||||
sqlite3_stmt *pStmt = nullptr;
|
||||
};
|
||||
|
||||
class ColumnRenderer : public ShellRenderer {
|
||||
public:
|
||||
explicit ColumnRenderer(ShellState &state);
|
||||
|
||||
virtual void RenderHeader(ColumnarResult &result) = 0;
|
||||
virtual void RenderFooter(ColumnarResult &result);
|
||||
|
||||
virtual const char *GetColumnSeparator() = 0;
|
||||
virtual const char *GetRowSeparator() = 0;
|
||||
virtual const char *GetRowStart() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void RenderAlignedValue(ColumnarResult &result, idx_t i);
|
||||
};
|
||||
|
||||
class RowRenderer : public ShellRenderer {
|
||||
public:
|
||||
explicit RowRenderer(ShellState &state);
|
||||
|
||||
bool first_row = true;
|
||||
|
||||
public:
|
||||
virtual void Render(RowResult &result);
|
||||
|
||||
virtual void RenderHeader(RowResult &result);
|
||||
virtual void RenderRow(RowResult &result) = 0;
|
||||
virtual void RenderFooter(RowResult &result);
|
||||
};
|
||||
|
||||
} // namespace duckdb_shell
|
||||
Reference in New Issue
Block a user