#pragma once
#include "binder/bound_statement.h"
#include "common/enums/conflict_action.h"
#include "common/types/types.h"
namespace lbug {
namespace binder {
struct BoundCreateIndexInfo {
std::string indexType;
std::string indexName;
std::string tableName;
common::table_id_t tableID;
std::string propertyName;
common::property_id_t propertyID;
common::column_id_t columnID;
common::PhysicalTypeID keyDataType;
common::ConflictAction onConflict;
BoundCreateIndexInfo copy() const { return *this; }
std::string toString() const;
};
class BoundCreateIndex final : public BoundStatement {
static constexpr common::StatementType type_ = common::StatementType::CREATE_INDEX;
public:
explicit BoundCreateIndex(BoundCreateIndexInfo info)
: BoundStatement{type_, BoundStatementResult::createSingleStringColumnResult()},
info{std::move(info)} {}
const BoundCreateIndexInfo& getInfo() const { return info; }
private:
BoundCreateIndexInfo info;
};
} }