use crate::controllers::Entity;
use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};
use crate::controllers::product_reviews::{
NoEmail, NoId, ProductReviewCreateBuilder, ProductReviewUpdateBuilder,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProductReview {
pub id: i32,
pub date_created: NaiveDateTime,
pub date_created_gmt: NaiveDateTime,
pub product_id: i32,
pub status: ReviewStatus,
pub reviewer: String,
pub reviewer_email: String,
pub review: String,
pub rating: i32,
pub verified: bool,
}
impl Entity for ProductReview {
fn endpoint() -> String {
String::from("products/reviews/")
}
fn child_endpoint(parent_id: i32) -> String {
let _ = parent_id;
String::new()
}
}
impl ProductReview {
pub fn create() -> ProductReviewCreateBuilder<NoId, NoEmail> {
ProductReviewCreateBuilder::default()
}
pub fn update() -> ProductReviewUpdateBuilder {
ProductReviewUpdateBuilder::default()
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum ReviewStatus {
#[default]
Approved,
Hold,
Spam,
Unspam,
Trash,
Untrash,
}