Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I28cf5b7b7cff8e90e123d624d97cf9656a6a6964
35 lines
1 KiB
Rust
35 lines
1 KiB
Rust
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
use uuid::Uuid;
|
|
|
|
#[derive(Debug, Serialize, utoipa::ToSchema)]
|
|
pub struct UsageEventResponse {
|
|
pub id: String,
|
|
pub media_id: Option<String>,
|
|
pub user_id: Option<String>,
|
|
pub event_type: String,
|
|
pub timestamp: DateTime<Utc>,
|
|
pub duration_secs: Option<f64>,
|
|
}
|
|
|
|
impl From<pinakes_core::analytics::UsageEvent> for UsageEventResponse {
|
|
fn from(e: pinakes_core::analytics::UsageEvent) -> Self {
|
|
Self {
|
|
id: e.id.to_string(),
|
|
media_id: e.media_id.map(|m| m.0.to_string()),
|
|
user_id: e.user_id.map(|u| u.0.to_string()),
|
|
event_type: e.event_type.to_string(),
|
|
timestamp: e.timestamp,
|
|
duration_secs: e.duration_secs,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, utoipa::ToSchema)]
|
|
pub struct RecordUsageEventRequest {
|
|
pub media_id: Option<Uuid>,
|
|
pub event_type: String,
|
|
pub duration_secs: Option<f64>,
|
|
#[schema(value_type = Option<Object>)]
|
|
pub context: Option<serde_json::Value>,
|
|
}
|