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

ircd:Ⓜ️:user: Simplify user::room_tags impl w/ modern linkage.

ircd:Ⓜ️:user: Simplify user::room_account_data impl w/ modern linkage.

ircd:Ⓜ️:user: Modernize user::profile impl linkage.

ircd:Ⓜ️:user: Modernize user::account_data impl linkage.

ircd:Ⓜ️:user: Simplify user::ignores impl w/ modern linkage.
This commit is contained in:
Jason Volk 2019-07-13 15:17:23 -07:00
parent 0eda690733
commit df8fd36fde
10 changed files with 153 additions and 559 deletions

View file

@ -18,10 +18,6 @@ struct ircd::m::user::account_data
m::user user;
static bool for_each(const m::user &, const closure_bool &);
static bool get(std::nothrow_t, const m::user &, const string_view &type, const closure &);
static event::id::buf set(const m::user &, const string_view &type, const json::object &value);
public:
bool for_each(const closure_bool &) const;
bool get(std::nothrow_t, const string_view &type, const closure &) const;

View file

@ -19,8 +19,6 @@ struct ircd::m::user::ignores
m::user user;
static bool enforce(const string_view &type);
static bool for_each(const m::user &, const closure_bool &);
static bool has(const m::user &, const m::user::id &other);
public:
bool for_each(const closure_bool &) const;

View file

@ -20,9 +20,6 @@ struct ircd::m::user::profile
m::user user;
static void fetch(const m::user &, const net::hostport &, const string_view &key = {});
static bool for_each(const m::user &, const closure_bool &);
static bool get(std::nothrow_t, const m::user &, const string_view &key, const closure &);
static event::id::buf set(const m::user &, const string_view &key, const string_view &value);
public:
bool for_each(const closure_bool &) const;

View file

@ -30,9 +30,6 @@ struct ircd::m::user::room_account_data
m::room room;
static string_view _type(const mutable_buffer &out, const m::room::id &);
static bool for_each(const m::user &, const m::room &, const closure_bool &);
static bool get(std::nothrow_t, const m::user &, const m::room &, const string_view &type, const closure &);
static event::id::buf set(const m::user &, const m::room &, const string_view &type, const json::object &value);
public:
bool for_each(const closure_bool &) const;

View file

@ -30,10 +30,6 @@ struct ircd::m::user::room_tags
m::room room;
static string_view _type(const mutable_buffer &out, const m::room::id &);
static bool for_each(const m::user &, const m::room &, const closure_bool &);
static bool get(std::nothrow_t, const m::user &, const m::room &, const string_view &type, const closure &);
static event::id::buf set(const m::user &, const m::room &, const string_view &type, const json::object &value);
static bool del(const m::user &, const m::room &, const string_view &type);
public:
bool for_each(const closure_bool &) const;

507
ircd/m.cc
View file

@ -3467,14 +3467,6 @@ const
// user::profile
//
ircd::m::event::id::buf
ircd::m::user::profile::set(const string_view &key,
const string_view &val)
const
{
return set(user, key, val);
}
ircd::string_view
ircd::m::user::profile::get(const mutable_buffer &out,
const string_view &key)
@ -3504,446 +3496,6 @@ const
};
}
bool
ircd::m::user::profile::get(std::nothrow_t,
const string_view &key,
const closure &closure)
const
{
return get(std::nothrow, user, key, closure);
}
bool
ircd::m::user::profile::for_each(const closure_bool &closure)
const
{
return for_each(user, closure);
}
ircd::m::event::id::buf
ircd::m::user::profile::set(const m::user &u,
const string_view &k,
const string_view &v)
{
using prototype = event::id::buf (const m::user &, const string_view &, const string_view &);
static mods::import<prototype> function
{
"client_profile", "ircd::m::user::profile::set"
};
return function(u, k, v);
}
bool
ircd::m::user::profile::get(std::nothrow_t,
const m::user &u,
const string_view &k,
const closure &c)
{
using prototype = bool (std::nothrow_t, const m::user &, const string_view &, const closure &);
static mods::import<prototype> function
{
"client_profile", "ircd::m::user::profile::get"
};
return function(std::nothrow, u, k, c);
}
bool
ircd::m::user::profile::for_each(const m::user &u,
const closure_bool &c)
{
using prototype = bool (const m::user &, const closure_bool &);
static mods::import<prototype> function
{
"client_profile", "ircd::m::user::profile::for_each"
};
return function(u, c);
}
void
ircd::m::user::profile::fetch(const m::user &u,
const net::hostport &remote,
const string_view &key)
{
using prototype = void (const m::user &, const net::hostport &, const string_view &);
static mods::import<prototype> function
{
"client_profile", "ircd::m::user::profile::fetch"
};
return function(u, remote, key);
}
//
// user::account_data
//
ircd::m::event::id::buf
ircd::m::user::account_data::set(const string_view &type,
const json::object &val)
const
{
return set(user, type, val);
}
ircd::json::object
ircd::m::user::account_data::get(const mutable_buffer &out,
const string_view &type)
const
{
json::object ret;
get(std::nothrow, type, [&out, &ret]
(const string_view &type, const json::object &val)
{
ret = string_view { data(out), copy(out, val) };
});
return ret;
}
void
ircd::m::user::account_data::get(const string_view &type,
const closure &closure)
const
{
if(!get(std::nothrow, user, type, closure))
throw m::NOT_FOUND
{
"account data type '%s' for user %s not found",
type,
string_view{user.user_id}
};
}
bool
ircd::m::user::account_data::get(std::nothrow_t,
const string_view &type,
const closure &closure)
const
{
return get(std::nothrow, user, type, closure);
}
bool
ircd::m::user::account_data::for_each(const closure_bool &closure)
const
{
return for_each(user, closure);
}
ircd::m::event::id::buf
ircd::m::user::account_data::set(const m::user &u,
const string_view &t,
const json::object &v)
{
using prototype = event::id::buf (const m::user &, const string_view &, const json::object &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::account_data::set"
};
return function(u, t, v);
}
bool
ircd::m::user::account_data::get(std::nothrow_t,
const m::user &u,
const string_view &t,
const closure &c)
{
using prototype = bool (std::nothrow_t, const m::user &, const string_view &, const closure &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::account_data::get"
};
return function(std::nothrow, u, t, c);
}
bool
ircd::m::user::account_data::for_each(const m::user &u,
const closure_bool &c)
{
using prototype = bool (const m::user &, const closure_bool &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::account_data::for_each"
};
return function(u, c);
}
//
// user::room_account_data
//
ircd::m::event::id::buf
ircd::m::user::room_account_data::set(const string_view &type,
const json::object &val)
const
{
return set(user, room, type, val);
}
ircd::json::object
ircd::m::user::room_account_data::get(const mutable_buffer &out,
const string_view &type)
const
{
json::object ret;
get(std::nothrow, type, [&out, &ret]
(const string_view &type, const json::object &val)
{
ret = string_view { data(out), copy(out, val) };
});
return ret;
}
void
ircd::m::user::room_account_data::get(const string_view &type,
const closure &closure)
const
{
if(!get(std::nothrow, user, room, type, closure))
throw m::NOT_FOUND
{
"account data type '%s' for user %s in room %s not found",
type,
string_view{user.user_id},
string_view{room.room_id}
};
}
bool
ircd::m::user::room_account_data::get(std::nothrow_t,
const string_view &type,
const closure &closure)
const
{
return get(std::nothrow, user, room, type, closure);
}
bool
ircd::m::user::room_account_data::for_each(const closure_bool &closure)
const
{
return for_each(user, room, closure);
}
ircd::m::event::id::buf
ircd::m::user::room_account_data::set(const m::user &u,
const m::room &r,
const string_view &t,
const json::object &v)
{
using prototype = event::id::buf (const m::user &, const m::room &, const string_view &, const json::object &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_account_data::set"
};
return function(u, r, t, v);
}
bool
ircd::m::user::room_account_data::get(std::nothrow_t,
const m::user &u,
const m::room &r,
const string_view &t,
const closure &c)
{
using prototype = bool (std::nothrow_t, const m::user &, const m::room &, const string_view &, const closure &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_account_data::get"
};
return function(std::nothrow, u, r, t, c);
}
bool
ircd::m::user::room_account_data::for_each(const m::user &u,
const m::room &r,
const closure_bool &c)
{
using prototype = bool (const m::user &, const m::room &, const closure_bool &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_account_data::for_each"
};
return function(u, r, c);
}
ircd::string_view
ircd::m::user::room_account_data::_type(const mutable_buffer &out,
const m::room::id &room_id)
{
using prototype = string_view (const mutable_buffer &, const m::room::id &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_account_data::_type"
};
return function(out, room_id);
}
//
// user::room_tags
//
bool
ircd::m::user::room_tags::del(const string_view &type)
const
{
return del(user, room, type);
}
ircd::m::event::id::buf
ircd::m::user::room_tags::set(const string_view &type,
const json::object &val)
const
{
return set(user, room, type, val);
}
ircd::json::object
ircd::m::user::room_tags::get(const mutable_buffer &out,
const string_view &type)
const
{
json::object ret;
get(std::nothrow, type, [&out, &ret]
(const string_view &type, const json::object &val)
{
ret = string_view { data(out), copy(out, val) };
});
return ret;
}
void
ircd::m::user::room_tags::get(const string_view &type,
const closure &closure)
const
{
if(!get(std::nothrow, user, room, type, closure))
throw m::NOT_FOUND
{
"account data type '%s' for user %s in room %s not found",
type,
string_view{user.user_id},
string_view{room.room_id}
};
}
bool
ircd::m::user::room_tags::get(std::nothrow_t,
const string_view &type,
const closure &closure)
const
{
return get(std::nothrow, user, room, type, closure);
}
bool
ircd::m::user::room_tags::for_each(const closure_bool &closure)
const
{
return for_each(user, room, closure);
}
bool
ircd::m::user::room_tags::del(const m::user &u,
const m::room &r,
const string_view &t)
{
using prototype = bool (const m::user &, const m::room &, const string_view &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_tags::del"
};
return function(u, r, t);
}
ircd::m::event::id::buf
ircd::m::user::room_tags::set(const m::user &u,
const m::room &r,
const string_view &t,
const json::object &v)
{
using prototype = event::id::buf (const m::user &, const m::room &, const string_view &, const json::object &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_tags::set"
};
return function(u, r, t, v);
}
bool
ircd::m::user::room_tags::get(std::nothrow_t,
const m::user &u,
const m::room &r,
const string_view &t,
const closure &c)
{
using prototype = bool (std::nothrow_t, const m::user &, const m::room &, const string_view &, const closure &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_tags::get"
};
return function(std::nothrow, u, r, t, c);
}
bool
ircd::m::user::room_tags::for_each(const m::user &u,
const m::room &r,
const closure_bool &c)
{
using prototype = bool (const m::user &, const m::room &, const closure_bool &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_tags::for_each"
};
return function(u, r, c);
}
ircd::string_view
ircd::m::user::room_tags::_type(const mutable_buffer &out,
const m::room::id &room_id)
{
using prototype = string_view (const mutable_buffer &, const m::room::id &);
static mods::import<prototype> function
{
"client_user", "ircd::m::user::room_tags::_type"
};
return function(out, room_id);
}
//
// user::filter
//
@ -4060,65 +3612,6 @@ ircd::m::user::filter::for_each(const m::user &u,
return function(u, c);
}
//
// user::ignores
//
bool
ircd::m::user::ignores::has(const m::user::id &other)
const
{
return has(user, other);
}
bool
ircd::m::user::ignores::for_each(const closure_bool &closure)
const
{
return for_each(user, closure);
}
bool
ircd::m::user::ignores::has(const m::user &u,
const m::user::id &other)
{
using prototype = bool (const m::user &, const m::user::id &);
static mods::import<prototype> call
{
"m_ignored_user_list", "ircd::m::user::ignores::has"
};
return call(u, other);
}
bool
ircd::m::user::ignores::for_each(const m::user &u,
const closure_bool &c)
{
using prototype = bool (const m::user &, const closure_bool &);
static mods::import<prototype> call
{
"m_ignored_user_list", "ircd::m::user::ignores::for_each"
};
return call(u, c);
}
bool
ircd::m::user::ignores::enforce(const string_view &type)
{
using prototype = bool (const string_view &);
static mods::import<prototype> call
{
"m_ignored_user_list", "ircd::m::user::ignores::enforce"
};
return call(type);
}
///////////////////////////////////////////////////////////////////////////////
//
// m/txn.h

View file

@ -332,9 +332,9 @@ catch(const server::error &e)
m::event::id::buf
IRCD_MODULE_EXPORT
ircd::m::user::profile::set(const m::user &user,
const string_view &key,
ircd::m::user::profile::set(const string_view &key,
const string_view &val)
const
{
const m::user::room user_room
{
@ -347,12 +347,43 @@ ircd::m::user::profile::set(const m::user &user,
});
}
ircd::string_view
IRCD_MODULE_EXPORT
ircd::m::user::profile::get(const mutable_buffer &out,
const string_view &key)
const
{
string_view ret;
get(std::nothrow, key, [&out, &ret]
(const string_view &key, const string_view &val)
{
ret = { data(out), copy(out, val) };
});
return ret;
}
void
IRCD_MODULE_EXPORT
ircd::m::user::profile::get(const string_view &key,
const closure &closure)
const
{
if(!get(std::nothrow, key, closure))
throw m::NOT_FOUND
{
"Property %s in profile for %s not found",
key,
string_view{user.user_id}
};
}
bool
IRCD_MODULE_EXPORT
ircd::m::user::profile::get(std::nothrow_t,
const m::user &user,
const string_view &key,
const closure &closure)
const
{
const user::room user_room{user};
const room::state state{user_room};
@ -375,8 +406,8 @@ ircd::m::user::profile::get(std::nothrow_t,
bool
IRCD_MODULE_EXPORT
ircd::m::user::profile::for_each(const m::user &user,
const closure_bool &closure)
ircd::m::user::profile::for_each(const closure_bool &closure)
const
{
const user::room user_room{user};
const room::state state{user_room};
@ -439,7 +470,7 @@ ircd::m::user::profile::fetch(const m::user &user,
});
if(!exists)
profile.set(user, member.first, member.second);
profile.set(member.first, member.second);
}
}

View file

@ -76,9 +76,9 @@ get__account_data(client &client,
ircd::m::event::id::buf
IRCD_MODULE_EXPORT
ircd::m::user::account_data::set(const m::user &user,
const string_view &type,
ircd::m::user::account_data::set(const string_view &type,
const json::object &value)
const
{
const m::user::room user_room
{
@ -88,12 +88,42 @@ ircd::m::user::account_data::set(const m::user &user,
return send(user_room, user, "ircd.account_data", type, value);
}
ircd::json::object
IRCD_MODULE_EXPORT
ircd::m::user::account_data::get(const mutable_buffer &out,
const string_view &type)
const
{
json::object ret;
get(std::nothrow, type, [&out, &ret]
(const string_view &type, const json::object &val)
{
ret = string_view { data(out), copy(out, val) };
});
return ret;
}
void
ircd::m::user::account_data::get(const string_view &type,
const closure &closure)
const
{
if(!get(std::nothrow, type, closure))
throw m::NOT_FOUND
{
"account data type '%s' for user %s not found",
type,
string_view{user.user_id}
};
}
bool
IRCD_MODULE_EXPORT
ircd::m::user::account_data::get(std::nothrow_t,
const m::user &user,
const string_view &type,
const closure &closure)
const
{
const user::room user_room{user};
const room::state state{user_room};
@ -111,8 +141,8 @@ ircd::m::user::account_data::get(std::nothrow_t,
bool
IRCD_MODULE_EXPORT
ircd::m::user::account_data::for_each(const m::user &user,
const closure_bool &closure)
ircd::m::user::account_data::for_each(const closure_bool &closure)
const
{
static const event::fetch::opts fopts
{

View file

@ -270,9 +270,8 @@ delete__tags(client &client,
bool
IRCD_MODULE_EXPORT
ircd::m::user::room_tags::del(const m::user &user,
const m::room &room,
const string_view &user_type)
ircd::m::user::room_tags::del(const string_view &user_type)
const
{
char typebuf[typebuf_size];
const string_view type
@ -304,10 +303,9 @@ ircd::m::user::room_tags::del(const m::user &user,
m::event::id::buf
IRCD_MODULE_EXPORT
ircd::m::user::room_tags::set(const m::user &user,
const m::room &room,
const string_view &user_type,
ircd::m::user::room_tags::set(const string_view &user_type,
const json::object &value)
const
{
char typebuf[typebuf_size];
const string_view type
@ -323,13 +321,44 @@ ircd::m::user::room_tags::set(const m::user &user,
return send(user_room, user, type, user_type, value);
}
ircd::json::object
IRCD_MODULE_EXPORT
ircd::m::user::room_tags::get(const mutable_buffer &out,
const string_view &type)
const
{
json::object ret;
get(std::nothrow, type, [&out, &ret]
(const string_view &type, const json::object &val)
{
ret = string_view { data(out), copy(out, val) };
});
return ret;
}
void
IRCD_MODULE_EXPORT
ircd::m::user::room_tags::get(const string_view &type,
const closure &closure)
const
{
if(!get(std::nothrow, type, closure))
throw m::NOT_FOUND
{
"account data type '%s' for user %s in room %s not found",
type,
string_view{user.user_id},
string_view{room.room_id}
};
}
bool
IRCD_MODULE_EXPORT
ircd::m::user::room_tags::get(std::nothrow_t,
const m::user &user,
const m::room &room,
const string_view &user_type,
const closure &closure)
const
{
char typebuf[typebuf_size];
const string_view type
@ -356,9 +385,8 @@ ircd::m::user::room_tags::get(std::nothrow_t,
bool
IRCD_MODULE_EXPORT
ircd::m::user::room_tags::for_each(const m::user &user,
const m::room &room,
const closure_bool &closure)
ircd::m::user::room_tags::for_each(const closure_bool &closure)
const
{
char typebuf[typebuf_size];
const string_view type
@ -474,10 +502,9 @@ get__account_data(client &client,
m::event::id::buf
IRCD_MODULE_EXPORT
ircd::m::user::room_account_data::set(const m::user &user,
const m::room &room,
const string_view &user_type,
ircd::m::user::room_account_data::set(const string_view &user_type,
const json::object &value)
const
{
char typebuf[typebuf_size];
const string_view type
@ -493,13 +520,44 @@ ircd::m::user::room_account_data::set(const m::user &user,
return send(user_room, user, type, user_type, value);
}
ircd::json::object
IRCD_MODULE_EXPORT
ircd::m::user::room_account_data::get(const mutable_buffer &out,
const string_view &type)
const
{
json::object ret;
get(std::nothrow, type, [&out, &ret]
(const string_view &type, const json::object &val)
{
ret = string_view { data(out), copy(out, val) };
});
return ret;
}
void
IRCD_MODULE_EXPORT
ircd::m::user::room_account_data::get(const string_view &type,
const closure &closure)
const
{
if(!get(std::nothrow, type, closure))
throw m::NOT_FOUND
{
"account data type '%s' for user %s in room %s not found",
type,
string_view{user.user_id},
string_view{room.room_id}
};
}
bool
IRCD_MODULE_EXPORT
ircd::m::user::room_account_data::get(std::nothrow_t,
const m::user &user,
const m::room &room,
const string_view &user_type,
const closure &closure)
const
{
char typebuf[typebuf_size];
const string_view type
@ -523,9 +581,8 @@ ircd::m::user::room_account_data::get(std::nothrow_t,
bool
IRCD_MODULE_EXPORT
ircd::m::user::room_account_data::for_each(const m::user &user,
const m::room &room,
const closure_bool &closure)
ircd::m::user::room_account_data::for_each(const closure_bool &closure)
const
{
char typebuf[typebuf_size];
const string_view type

View file

@ -99,10 +99,10 @@ handle_m_ignored_user(const m::event &event,
bool
IRCD_MODULE_EXPORT
ircd::m::user::ignores::has(const m::user &user,
const m::user::id &other)
ircd::m::user::ignores::has(const m::user::id &other)
const
{
return !for_each(user, [&other]
return !for_each([&other]
(const m::user::id &user_id, const json::object &)
{
return user_id != other;
@ -111,9 +111,8 @@ ircd::m::user::ignores::has(const m::user &user,
bool
IRCD_MODULE_EXPORT
ircd::m::user::ignores::for_each(const m::user &user,
const closure_bool &closure)
try
ircd::m::user::ignores::for_each(const closure_bool &closure)
const try
{
const m::user::account_data account_data
{