use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct StagePrompt {
    #[serde(rename = "field_key")]
    pub field_key: String,
    #[serde(rename = "label")]
    pub label: String,
    #[serde(rename = "type")]
    pub r#type: models::PromptTypeEnum,
    #[serde(rename = "required")]
    pub required: bool,
    #[serde(rename = "placeholder")]
    pub placeholder: String,
    #[serde(rename = "initial_value")]
    pub initial_value: String,
    #[serde(rename = "order")]
    pub order: i32,
    #[serde(rename = "sub_text")]
    pub sub_text: String,
    #[serde(rename = "choices", deserialize_with = "Option::deserialize")]
    pub choices: Option<Vec<String>>,
}
impl StagePrompt {
        pub fn new(
        field_key: String,
        label: String,
        r#type: models::PromptTypeEnum,
        required: bool,
        placeholder: String,
        initial_value: String,
        order: i32,
        sub_text: String,
        choices: Option<Vec<String>>,
    ) -> StagePrompt {
        StagePrompt {
            field_key,
            label,
            r#type,
            required,
            placeholder,
            initial_value,
            order,
            sub_text,
            choices,
        }
    }
}