0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-16 08:58:20 +02:00

ircd:Ⓜ️:dbs: Add and use origins key separator; minor cleanup.

This commit is contained in:
Jason Volk 2018-03-04 00:08:30 -08:00
parent 472aaecb0f
commit 5b4c65c875
3 changed files with 31 additions and 3 deletions

View file

@ -35,6 +35,8 @@ namespace ircd::m::dbs
std::tuple<string_view, string_view> room_state_key(const string_view &amalgam);
string_view room_origins_key(const mutable_buffer &out, const id::room &, const string_view &origin, const id::user &member);
std::tuple<string_view, string_view> room_origins_key(const string_view &amalgam);
string_view room_events_key(const mutable_buffer &out, const id::room &, const uint64_t &depth, const id::event &);
string_view room_events_key(const mutable_buffer &out, const id::room &, const uint64_t &depth);
std::tuple<uint64_t, string_view> room_events_key(const string_view &amalgam);
@ -85,9 +87,11 @@ namespace ircd::m::dbs::desc
// Metadata columns
extern const database::descriptor events__state_node;
extern const db::prefix_transform events__room_events__pfx;
extern const db::comparator events__room_events__cmp;
extern const database::descriptor events__room_events;
extern const db::prefix_transform events__room_origins__pfx;
extern const database::descriptor events__room_origins;

View file

@ -648,6 +648,10 @@ ircd::m::dbs::desc::events__room_events
events__room_events__pfx,
};
//
// origins sequential
//
/// Prefix transform for the events__room_origins
///
/// TODO: This needs The Grammar
@ -684,6 +688,26 @@ ircd::m::dbs::room_origins_key(const mutable_buffer &out,
return { data(out), len };
}
std::tuple<ircd::string_view, ircd::string_view>
ircd::m::dbs::room_origins_key(const string_view &amalgam)
{
const auto &key
{
lstrip(amalgam, ":::")
};
const auto &s
{
split(key, "@")
};
return
{
{ s.first },
{ end(s.first), end(key) }
};
}
const ircd::database::descriptor
ircd::m::dbs::desc::events__room_origins
{

View file

@ -638,7 +638,7 @@ const
{
const string_view &member
{
end(split(key, "@").first), end(key)
std::get<1>(dbs::room_origins_key(key))
};
bool ret{false};
@ -745,9 +745,9 @@ const
return _test_([&last, &lastbuf, &view]
(const string_view &key)
{
const string_view &origin //TODO: XXX
const string_view &origin
{
split(key, "@").first
std::get<0>(dbs::room_origins_key(key))
};
if(origin == last)