schemas_v1_api_notifications - OmniCloudOrg/OmniOrchestrator GitHub Wiki
Path: src/schemas/v1/api/notifications.rs
Notification management module for handling CRUD operations on notifications.
This module provides functionality to create, read, update, and delete notifications in the system. It includes endpoints for managing both user notifications and role-based notifications.
- struct CreateUserNotificationRequest
- struct CreateRoleNotificationRequest
- struct AcknowledgeNotificationRequest
- async fn list_user_notifications
- async fn count_unread_user_notifications
- async fn get_user_notification_by_id
- async fn create_user_notification
- async fn mark_user_notification_as_read
- async fn mark_all_user_notifications_as_read
- async fn delete_user_notification
- async fn delete_read_user_notifications
- async fn list_role_notifications
- async fn create_role_notification
- async fn acknowledge_notification
- async fn get_all_user_notifications_with_count
pub struct CreateUserNotificationRequest {
pub message: String,
pub notification_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub org_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub importance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub action_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub action_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_at: Option<DateTime<Utc>>,
}
pub struct CreateRoleNotificationRequest {
pub role_id: i64,
pub message: String,
pub notification_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub org_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub importance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub action_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub action_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_at: Option<DateTime<Utc>>,
}
pub struct AcknowledgeNotificationRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub notification_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub role_notification_id: Option<i64>,
}
pub async fn list_user_notifications(
platform_id: i64,
user_id: i64,
page: Option<i64>,
per_page: Option<i64>,
include_read: Option<bool>,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get a paginated list of notifications for a user
pub async fn count_unread_user_notifications(
platform_id: i64,
user_id: i64,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Count unread notifications for a user (for badges)
pub async fn get_user_notification_by_id(
platform_id: i64,
id: i64,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get a specific notification by ID
pub async fn create_user_notification(
platform_id: i64,
notification_data: Json<CreateUserNotificationRequest>,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Create a new notification for a user
pub async fn mark_user_notification_as_read(
platform_id: i64,
id: i64,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Mark a notification as read
pub async fn mark_all_user_notifications_as_read(
platform_id: i64,
user_id: i64,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Mark all notifications for a user as read
pub async fn delete_user_notification(
platform_id: i64,
id: i64,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Delete a notification
pub async fn delete_read_user_notifications(
platform_id: i64,
user_id: i64,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Delete all read notifications for a user
pub async fn list_role_notifications(
platform_id: i64,
role_id: i64,
page: Option<i64>,
per_page: Option<i64>,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get a paginated list of role notifications
pub async fn create_role_notification(
platform_id: i64,
notification_data: Json<CreateRoleNotificationRequest>,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Create a new notification for a role
pub async fn acknowledge_notification(
platform_id: i64,
ack_data: Json<AcknowledgeNotificationRequest>,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Acknowledge a notification
pub async fn get_all_user_notifications_with_count(
platform_id: i64,
user_id: i64,
page: Option<i64>,
per_page: Option<i64>,
user: User, // For authentication
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get all notifications for a user including role notifications