#ifndef PRIMARY_KEY_ATTRIBUTE_HPP #define PRIMARY_KEY_ATTRIBUTE_HPP #include "matador/utils/primary_key_generator_type.hpp" #include namespace matador::utils { class primary_key_attribute final { public: /** * Creates a primary_key_attribute instance * with size 0 (zero). */ primary_key_attribute() = default; /** * Creates primary_key_attribute instance * with given size. * * @param size Size of the attribute */ primary_key_attribute(size_t size); // NOLINT(*-explicit-constructor) primary_key_attribute(generator_type generator); // NOLINT(*-explicit-constructor) primary_key_attribute(size_t size, generator_type generator); ~primary_key_attribute() = default; primary_key_attribute(const primary_key_attribute &) = default; primary_key_attribute(primary_key_attribute &&) = default; primary_key_attribute &operator=(const primary_key_attribute &) = default; primary_key_attribute &operator=(primary_key_attribute &&) = default; primary_key_attribute& operator=(size_t size); primary_key_attribute& operator=(generator_type generator); /** * Returns the size of the field * * @return Size of the field */ [[nodiscard]] size_t size() const; /** * Returns the generator type of the field * * @return Generator type of the field */ [[nodiscard]] generator_type generator() const; private: size_t size_ = 0; generator_type generator_ = generator_type::MANUALLY; }; const primary_key_attribute default_pk_attributes {}; } #endif //PRIMARY_KEY_ATTRIBUTE_HPP