use crate::controllers::Entity;
use serde::{Deserialize, Serialize};
use crate::controllers::product_attributes::{
AttributeCreateBuilder, AttributeUpdateBuilder, NoName,
};
use crate::controllers::products::{AttributeDTOBuilder, NoOptions};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Attribute {
pub id: i32,
pub name: String,
pub slug: String,
#[serde(rename = "type")]
pub attribute_type: AttributeType,
pub order_by: AttributeSortOrder,
pub has_archives: bool,
}
impl Entity for Attribute {
fn endpoint() -> String {
String::from("products/attributes/")
}
fn child_endpoint(parent_id: i32) -> String {
let _ = parent_id;
String::new()
}
}
impl Attribute {
pub fn create() -> AttributeCreateBuilder<NoName> {
AttributeCreateBuilder::default()
}
pub fn update() -> AttributeUpdateBuilder {
AttributeUpdateBuilder::default()
}
pub fn builder() -> AttributeDTOBuilder<NoName, NoOptions> {
AttributeDTOBuilder::default()
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum AttributeType {
#[default]
Select,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AttributeSortOrder {
#[default]
MenuOrder,
Name,
NameNum,
Id,
}