/*
 * Zernio API
 *
 * API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
 *
 * The version of the OpenAPI document: 1.0.4
 * Contact: support@zernio.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct VoteRedditThingRequest {
    /// Reddit fullname of the target. Prefix \"t3_\" for a post and \"t1_\" for a comment. A bare id with no prefix is treated as a post (\"t3_\").
    #[serde(rename = "thingId")]
    pub thing_id: String,
    /// 1 to upvote, -1 to downvote, 0 to clear an existing vote
    #[serde(rename = "direction")]
    pub direction: Direction,
}

impl VoteRedditThingRequest {
    pub fn new(thing_id: String, direction: Direction) -> VoteRedditThingRequest {
        VoteRedditThingRequest {
            thing_id,
            direction,
        }
    }
}
/// 1 to upvote, -1 to downvote, 0 to clear an existing vote
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Direction {
    #[serde(rename = "1")]
    Variant1,
    #[serde(rename = "0")]
    Variant0,
    #[serde(rename = "-1")]
    Variant12,
}

impl Default for Direction {
    fn default() -> Direction {
        Self::Variant1
    }
}
