mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 11:18:51 +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:
parent
0eda690733
commit
df8fd36fde
10 changed files with 153 additions and 559 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
507
ircd/m.cc
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue