mirror of
https://github.com/matrix-construct/construct
synced 2025-01-16 01:26:58 +01:00
ircd::db: Remove the txn::append template iteration over a json::tuple.
This commit is contained in:
parent
764585e370
commit
2b9e2c850e
3 changed files with 35 additions and 60 deletions
|
@ -80,8 +80,6 @@ struct ircd::db::txn::append
|
||||||
append(txn &, const row::delta &);
|
append(txn &, const row::delta &);
|
||||||
append(txn &, const delta &);
|
append(txn &, const delta &);
|
||||||
append(txn &, const string_view &key, const json::iov &);
|
append(txn &, const string_view &key, const json::iov &);
|
||||||
template<class... T> append(txn &, const string_view &key, const json::tuple<T...> &, const op & = op::SET);
|
|
||||||
template<class... T> append(txn &, const string_view &key, const json::tuple<T...> &, std::array<column, sizeof...(T)> &, const op & = op::SET);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ircd::db::txn::checkpoint
|
struct ircd::db::txn::checkpoint
|
||||||
|
@ -97,54 +95,3 @@ struct ircd::db::txn::opts
|
||||||
size_t reserve_bytes = 0;
|
size_t reserve_bytes = 0;
|
||||||
size_t max_bytes = 0;
|
size_t max_bytes = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class... T>
|
|
||||||
ircd::db::txn::append::append(txn &txn,
|
|
||||||
const string_view &key,
|
|
||||||
const json::tuple<T...> &tuple,
|
|
||||||
const op &op)
|
|
||||||
{
|
|
||||||
for_each(tuple, [&txn, &key, &op]
|
|
||||||
(const auto &col, auto&& val)
|
|
||||||
{
|
|
||||||
if(!value_required(op) || defined(json::value(val))) append
|
|
||||||
{
|
|
||||||
txn, delta
|
|
||||||
{
|
|
||||||
op,
|
|
||||||
col,
|
|
||||||
key,
|
|
||||||
value_required(op)?
|
|
||||||
byte_view<string_view>{val}:
|
|
||||||
byte_view<string_view>{}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class... T>
|
|
||||||
ircd::db::txn::append::append(txn &txn,
|
|
||||||
const string_view &key,
|
|
||||||
const json::tuple<T...> &tuple,
|
|
||||||
std::array<column, sizeof...(T)> &col,
|
|
||||||
const op &op)
|
|
||||||
{
|
|
||||||
size_t i{0};
|
|
||||||
for_each(tuple, [&txn, &key, &col, &op, &i]
|
|
||||||
(const auto &, auto&& val)
|
|
||||||
{
|
|
||||||
if(!value_required(op) || defined(json::value(val))) append
|
|
||||||
{
|
|
||||||
txn, col.at(i), column::delta
|
|
||||||
{
|
|
||||||
op,
|
|
||||||
key,
|
|
||||||
value_required(op)?
|
|
||||||
byte_view<string_view>{val}:
|
|
||||||
byte_view<string_view>{}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
++i;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
|
@ -3969,7 +3969,7 @@ const
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Checkpoint
|
// txn::checkpoint
|
||||||
//
|
//
|
||||||
|
|
||||||
ircd::db::txn::checkpoint::checkpoint(txn &t)
|
ircd::db::txn::checkpoint::checkpoint(txn &t)
|
||||||
|
@ -3989,6 +3989,10 @@ noexcept
|
||||||
throw_on_error { t.wb->RollbackToSavePoint() };
|
throw_on_error { t.wb->RollbackToSavePoint() };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// txn::append
|
||||||
|
//
|
||||||
|
|
||||||
ircd::db::txn::append::append(txn &t,
|
ircd::db::txn::append::append(txn &t,
|
||||||
const string_view &key,
|
const string_view &key,
|
||||||
const json::iov &iov)
|
const json::iov &iov)
|
||||||
|
|
|
@ -218,14 +218,38 @@ ircd::m::dbs::_append_event(db::txn &txn,
|
||||||
const event &event,
|
const event &event,
|
||||||
const write_opts &opts)
|
const write_opts &opts)
|
||||||
{
|
{
|
||||||
|
const byte_view<string_view> key
|
||||||
|
{
|
||||||
|
opts.event_idx
|
||||||
|
};
|
||||||
|
|
||||||
|
size_t i{0};
|
||||||
|
for_each(event, [&txn, &opts, &key, &i]
|
||||||
|
(const auto &, auto&& val)
|
||||||
|
{
|
||||||
|
auto &column
|
||||||
|
{
|
||||||
|
event_column.at(i++)
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!column)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(value_required(opts.op) && !defined(json::value(val)))
|
||||||
|
return;
|
||||||
|
|
||||||
db::txn::append
|
db::txn::append
|
||||||
{
|
{
|
||||||
txn,
|
txn, column, db::column::delta
|
||||||
byte_view<string_view>(opts.event_idx),
|
{
|
||||||
event,
|
opts.op,
|
||||||
event_column,
|
string_view{key},
|
||||||
opts.op
|
value_required(opts.op)?
|
||||||
|
byte_view<string_view>{val}:
|
||||||
|
byte_view<string_view>{}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue