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