my_libs\api/
model.rs

1// src/api/model.rs
2
3use serde::{Deserialize, Serialize};
4use surrealdb::sql::Thing; // Specjalny typ SurrealDB dla ID rekordów (np. kot:ulv8...)
5
6// 📚 EDU (Serde):
7// Serialize -> pozwala zamienić obiekt Rust na JSON/TOML (do zapisu).
8// Deserialize -> pozwala zamienić JSON/TOML na obiekt Rust (do odczytu).
9// Debug -> pozwala wyświetlić obiekt w println!("{:?}", kot);
10#[derive(Debug, Serialize, Deserialize, Clone)]
11pub struct Kot {
12    // 📚 EDU (Option):
13    // Odpowiednik `string | null` w TS.
14    // ID jest Option, bo jak tworzymy nowego kota w RAM, to jeszcze nie ma ID.
15    pub id: Option<Thing>,
16    pub imie: String,
17    pub kolor: String,
18
19    // Opcjonalne pola - jeśli w bazie nie ma tego pola, Rust wstawi tu `None` zamiast błędu.
20    pub zrodlo: Option<String>,
21    pub wiek: Option<i32>,
22}