use crate::models::PermissionPair;
use crate::serde_for_bitflags;
#[cfg(feature = "client")]
use serde::Deserialize;
use serde::Serialize;
#[cfg(feature = "openapi")]
use utoipa::ToSchema;
#[derive(Clone, Debug, Default, Serialize)]
#[cfg_attr(feature = "client", derive(Deserialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct Role {
pub id: u64,
pub guild_id: u64,
pub name: String,
pub color: Option<u32>,
pub permissions: PermissionPair,
pub position: u16,
pub flags: RoleFlags,
}
bitflags::bitflags! {
#[derive(Default)]
pub struct RoleFlags: u32 {
const HOISTED = 1 << 0;
const MANAGED = 1 << 1;
const MENTIONABLE = 1 << 2;
const DEFAULT = 1 << 3;
}
}
serde_for_bitflags!(u32: RoleFlags);