synapse_admin_api/background_updates/run/
v1.rs

1//! [POST /_synapse/admin/v1/background_updates/start_job](https://github.com/element-hq/synapse/blob/master/docs/usage/administration/admin_api/background_updates.md#run)
2
3use ruma::{
4    api::{auth_scheme::AccessToken, request, response},
5    metadata,
6    serde::StringEnum,
7};
8
9metadata! {
10    method: POST,
11    rate_limited: false,
12    authentication: AccessToken,
13    path: "/_synapse/admin/v1/background_updates/start_job",
14}
15
16#[request]
17pub struct Request {
18    /// Which job to run.
19    pub job_name: JobName,
20}
21
22#[response]
23#[derive(Default)]
24pub struct Response {}
25
26impl Request {
27    /// Creates a `Request` with the given `job_name` value.
28    pub fn new(job_name: JobName) -> Self {
29        Self { job_name }
30    }
31}
32
33impl Response {
34    /// Creates an empty `Response`.
35    pub fn new() -> Self {
36        Self {}
37    }
38}
39
40#[derive(Clone, StringEnum)]
41#[ruma_enum(rename_all = "snake_case")]
42#[non_exhaustive]
43pub enum JobName {
44    /// Recalculate the stats for all rooms.
45    PopulateStatsProcessRooms,
46
47    /// Recalculate the user directory if it is stale or out of sync.
48    RegenerateDirectory,
49
50    #[doc(hidden)]
51    _Custom(crate::PrivOwnedStr),
52}
53
54#[test]
55fn test_run_background_updates() {
56    let job_name = JobName::PopulateStatsProcessRooms;
57    // Check create request
58    let request = Request::new(job_name.clone());
59    assert_eq!(request.job_name, job_name);
60}