query/source/core/object/attribute_generator.cpp

29 lines
980 B
C++

#include "matador/object/attribute_generator.hpp"
#include "matador/object/repository.hpp"
#include "matador/object/object.hpp"
namespace matador::object {
attribute_generator::attribute_generator(std::vector<attribute> &columns, const repository &repo, object &obj)
: columns_(columns)
, repo_(repo)
, obj_(obj)
{}
void attribute_generator::on_revision(const char *id, uint64_t &rev) {
on_attribute(id, rev);
}
utils::result<std::shared_ptr<attribute>, utils::error> attribute_generator::determine_foreign_ref(const std::type_index &ti) const {
return repo_.reference_column(ti);
}
void attribute_generator::insert_missing_reference_column(const std::type_index& ti, const std::shared_ptr<attribute>& ref_column) const {
const_cast<repository&>(repo_).missing_references_.insert({ti, ref_column});
}
void attribute_generator::prepare_primary_key(attribute& ref, utils::identifier &&pk) const {
obj_.pk_attribute_ = &ref;
obj_.pk_identifier_ = std::move(pk);
}
}