// @generated by jacquard-lexicon. DO NOT EDIT.
//
// Lexicon: dev.ocbwoy3.dotsyncd.device
//
// This file was automatically generated from Lexicon schemas.
// Any manual changes will be overwritten on the next regeneration.

#[jacquard_derive::lexicon]
#[derive(
    serde::Serialize,
    serde::Deserialize,
    Debug,
    Clone,
    PartialEq,
    Eq,
    jacquard_derive::IntoStatic
)]
#[serde(rename_all = "camelCase")]
pub struct Distro<'a> {
    ///The ID of the Linux distribution (e.g. nixos, gentoo)
    #[serde(borrow)]
    pub id: jacquard_common::CowStr<'a>,
    ///The name of the Linux distribution (e.g. NixOS, Gentoo Linux)
    #[serde(borrow)]
    pub name: jacquard_common::CowStr<'a>,
}

#[jacquard_derive::lexicon]
#[derive(
    serde::Serialize,
    serde::Deserialize,
    Debug,
    Clone,
    PartialEq,
    Eq,
    jacquard_derive::IntoStatic
)]
#[serde(rename_all = "camelCase")]
pub struct Device<'a> {
    ///The config in use on the device
    #[serde(borrow)]
    pub config_in_use: jacquard_common::types::string::Uri<'a>,
    ///The date and time when the device was added
    pub created_at: jacquard_common::types::string::Datetime,
    ///The distro specifications of the device
    #[serde(borrow)]
    pub distro: crate::dev_ocbwoy3::dotsyncd::device::Distro<'a>,
    ///The name of the device (e.g. Gaming PC, Laptop)
    #[serde(borrow)]
    pub name: jacquard_common::CowStr<'a>,
    ///The hardware specifications of the device
    #[serde(borrow)]
    pub rig: crate::dev_ocbwoy3::dotsyncd::device::Rig<'a>,
    ///The software setup of the device
    #[serde(borrow)]
    pub setup: crate::dev_ocbwoy3::dotsyncd::device::Setup<'a>,
}

impl jacquard_common::types::collection::Collection for Device<'_> {
    const NSID: &'static str = "dev.ocbwoy3.dotsyncd.device";
}

#[jacquard_derive::lexicon]
#[derive(
    serde::Serialize,
    serde::Deserialize,
    Debug,
    Clone,
    PartialEq,
    Eq,
    jacquard_derive::IntoStatic
)]
#[serde(rename_all = "camelCase")]
pub struct Rig<'a> {
    ///The CPU model of the device
    #[serde(borrow)]
    pub cpu: jacquard_common::CowStr<'a>,
    ///The amount of space in / (in numBlocks*blockSize, e.g. 32767*1024)
    #[serde(borrow)]
    pub disk: jacquard_common::CowStr<'a>,
    ///The type of filesystem on / (e.g. ext4, btrfs)
    #[serde(borrow)]
    pub disk_type: jacquard_common::CowStr<'a>,
    ///The GPU model of the device
    #[serde(borrow)]
    pub gpu: jacquard_common::CowStr<'a>,
    ///The amount of RAM in the device (e.g. 16GB)
    #[serde(borrow)]
    pub ram: jacquard_common::CowStr<'a>,
}

#[jacquard_derive::lexicon]
#[derive(
    serde::Serialize,
    serde::Deserialize,
    Debug,
    Clone,
    PartialEq,
    Eq,
    jacquard_derive::IntoStatic
)]
#[serde(rename_all = "camelCase")]
pub struct Setup<'a> {
    ///The WM/DE used on the device derived from $XDG_CURRENT_DESKTOP (e.g. Hyprland)
    #[serde(borrow)]
    pub wm: jacquard_common::CowStr<'a>,
}