Skip to main content

neptunium_http/endpoints/guild/roles/
update_role_positions.rs

1use bon::Builder;
2use neptunium_model::id::{
3    Id,
4    marker::{GuildMarker, RoleMarker},
5};
6use reqwest::Method;
7use serde::Serialize;
8
9use crate::{endpoints::Endpoint, request::Request};
10
11#[derive(Builder, Serialize, Copy, Clone, Debug)]
12pub struct UpdateGuildRolePositionsEntry {
13    pub id: Id<RoleMarker>,
14    pub position: u64,
15}
16
17#[derive(Builder, Clone, Debug)]
18pub struct UpdateGuildRolePositions {
19    pub guild_id: Id<GuildMarker>,
20    pub body: Vec<UpdateGuildRolePositionsEntry>,
21}
22
23impl Endpoint for UpdateGuildRolePositions {
24    type Response = ();
25
26    fn into_request(self) -> crate::request::Request {
27        Request::builder()
28            .method(Method::PATCH)
29            .body(serde_json::to_string(&self.body).unwrap())
30            .path(format!("/guilds/{}/roles", self.guild_id))
31            .build()
32    }
33}