12 ArchiveLocation::ArchiveLocation(Archive& context,
13 ArchiveStatement& statement,
14 const ArchiveClassRegistration& registration,
17 statement_(statement),
18 registration_(registration),
26 const std::string& item) {
28 return index.has_value() ? statement_.
WriteValue(index.value(), item) :
false;
31 bool ArchiveLocation::WriteIntegral(
const std::string& member, int64_t item) {
33 return index.has_value() ? statement_.
WriteValue(index.value(), item) :
false;
38 return index.has_value() ? statement_.
WriteValue(index.value(), item) :
false;
43 return index.has_value() ? statement_.
WriteValue(index.value(), item) :
false;
51 if (!index.has_value()) {
60 auto row_id = context_.ArchiveInstance(otherDef, other);
61 if (!row_id.has_value()) {
68 if (!statement_.
WriteValue(index.value(), row_id.value())) {
75 std::optional<int64_t> ArchiveLocation::WriteVectorKeys(
76 std::vector<int64_t>&& members) {
77 ArchiveVector vector(std::move(members));
81 bool ArchiveLocation::ReadVectorKeys(
PrimaryKey name,
82 std::vector<int64_t>& members) {
88 const auto& keys = vector.GetKeys();
89 std::move(keys.begin(), keys.end(), std::back_inserter(members));
95 return index.has_value() ? statement_.
ReadValue(index.value(), item) :
false;
98 bool ArchiveLocation::ReadIntegral(
const std::string& member, int64_t& item) {
100 return index.has_value() ? statement_.
ReadValue(index.value(), item) :
false;
105 return index.has_value() ? statement_.
ReadValue(index.value(), item) :
false;
110 return index.has_value() ? statement_.
ReadValue(index.value(), item) :
false;
121 if (!index.has_value()) {
128 int64_t foreignKey = 0;
129 if (!statement_.
ReadValue(index.value(), foreignKey)) {
136 if (!context_.UnarchiveInstance(otherDef, foreignKey, other)) {