54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#ifndef PRIMARY_KEY_ATTRIBUTE_HPP
|
|
#define PRIMARY_KEY_ATTRIBUTE_HPP
|
|
|
|
#include "matador/utils/primary_key_generator_type.hpp"
|
|
|
|
#include <cstddef>
|
|
|
|
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
|