//! 业务错误码 (biz_code) 和时间戳 (timestamp) 演示
//!
//! 运行: cargo run --example biz_code_demo

use anycms_core::ApiResult;
use serde::Serialize;

#[derive(Serialize)]
struct User {
    id: u32,
    name: String,
}

fn main() {
    // 示例1: 使用业务错误码
    // HTTP 状态码为 404，但业务错误码为 10001
    let result: ApiResult<User> = ApiResult::fail("用户不存在")
        .with_code(404)
        .with_biz_code(10001)
        .with_current_timestamp();

    println!("=== 业务错误码示例 ===");
    println!("{}", serde_json::to_string_pretty(&result).unwrap());

    // 示例2: 带时间戳的成功响应
    let user = User {
        id: 1,
        name: "Alice".to_string(),
    };
    let result = ApiResult::value(user)
        .with_message("获取成功")
        .with_biz_code(0) // 0 表示成功
        .with_current_timestamp();

    println!("\n=== 带时间戳的成功响应 ===");
    println!("{}", serde_json::to_string_pretty(&result).unwrap());

    // 示例3: 只用时间戳不用业务错误码
    let result: ApiResult<()> = ApiResult::ok()
        .with_message("操作成功")
        .with_timestamp(1700000000000);

    println!("\n=== 指定时间戳 ===");
    println!("{}", serde_json::to_string_pretty(&result).unwrap());
}
