Skip to main content

reinhardt_admin/types/
requests.rs

1//! Request types for admin panel API
2
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6/// Query parameters for list endpoint
7#[derive(Debug, Deserialize, Default)]
8pub struct ListQueryParams {
9	/// Page number (1-indexed)
10	pub page: Option<u64>,
11	/// Items per page
12	pub page_size: Option<u64>,
13	/// Search query
14	pub search: Option<String>,
15	/// Sort field (prefix with "-" for descending, e.g., "created_at" or "-created_at")
16	pub sort_by: Option<String>,
17	/// Filter field=value pairs
18	#[serde(flatten)]
19	pub filters: HashMap<String, String>,
20}
21
22/// Request body for create/update
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct MutationRequest {
25	/// Data to create/update
26	#[serde(flatten)]
27	pub data: HashMap<String, serde_json::Value>,
28}
29
30/// Request body for bulk delete
31#[derive(Debug, Deserialize)]
32pub struct BulkDeleteRequest {
33	/// IDs to delete
34	pub ids: Vec<String>,
35}
36
37/// Export format
38#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
39#[serde(rename_all = "lowercase")]
40#[derive(Default)]
41pub enum ExportFormat {
42	#[default]
43	Json,
44	Csv,
45	Tsv,
46}