lago_types/requests/
activity_log.rs

1use crate::models::PaginationParams;
2
3use crate::filters::{activity_log::ActivityLogFilters, common::ListFilters};
4
5/// Request parameters for listing activity logs.
6#[derive(Debug, Clone)]
7pub struct ListActivityLogsRequest {
8    pub pagination: PaginationParams,
9    pub filters: ActivityLogFilters,
10}
11
12impl ListActivityLogsRequest {
13    /// Creates a new empty list activity logs request.
14    pub fn new() -> Self {
15        Self {
16            pagination: PaginationParams::default(),
17            filters: ActivityLogFilters::default(),
18        }
19    }
20
21    /// Sets the pagination parameters for the request.
22    pub fn with_pagination(mut self, pagination: PaginationParams) -> Self {
23        self.pagination = pagination;
24        self
25    }
26
27    /// Sets the activity log filters for the request.
28    pub fn with_filters(mut self, filters: ActivityLogFilters) -> Self {
29        self.filters = filters;
30        self
31    }
32
33    /// Converts the request parameters into HTTP query parameters.
34    pub fn to_query_params(&self) -> Vec<(&str, String)> {
35        let mut params = self.pagination.to_query_params();
36        params.extend(self.filters.to_query_params());
37        params
38    }
39}
40
41impl Default for ListActivityLogsRequest {
42    fn default() -> Self {
43        Self::new()
44    }
45}
46
47/// Request parameters for retrieving a specific activity log.
48#[derive(Debug, Clone)]
49pub struct GetActivityLogRequest {
50    pub activity_id: String,
51}
52
53impl GetActivityLogRequest {
54    /// Creates a new get activity log request.
55    pub fn new(activity_id: String) -> Self {
56        Self { activity_id }
57    }
58}