use derive_empty_traits::EmptyTraits;
use resolver_api::{derive::Request, HasResponse};
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{update::ResourceTarget, NoData, I64};
pub trait MonitorUserRequest: HasResponse {}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorUserRequest)]
#[response(PushRecentlyViewedResponse)]
pub struct PushRecentlyViewed {
pub resource: ResourceTarget,
}
#[typeshare]
pub type PushRecentlyViewedResponse = NoData;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorUserRequest)]
#[response(SetLastSeenUpdateResponse)]
pub struct SetLastSeenUpdate {}
#[typeshare]
pub type SetLastSeenUpdateResponse = NoData;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorUserRequest)]
#[response(CreateApiKeyResponse)]
pub struct CreateApiKey {
pub name: String,
#[serde(default)]
pub expires: I64,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct CreateApiKeyResponse {
pub key: String,
pub secret: String,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorUserRequest)]
#[response(DeleteApiKeyResponse)]
pub struct DeleteApiKey {
pub key: String,
}
#[typeshare]
pub type DeleteApiKeyResponse = NoData;