openai_dive/v1/resources/
file.rs1use crate::v1::resources::shared::FileUpload;
2use derive_builder::Builder;
3use serde::{Deserialize, Serialize};
4use std::fmt::Display;
5
6#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
7pub struct File {
8 pub id: String,
10 pub bytes: u32,
12 pub created_at: u32,
14 pub filename: String,
16 pub object: String,
18 pub purpose: FilePurpose,
20}
21
22#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
23pub struct ListFilesParameters {
24 pub purpose: Option<FilePurpose>,
26}
27
28#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
29#[builder(name = "UploadFileParametersBuilder")]
30#[builder(setter(into, strip_option), default)]
31pub struct UploadFileParameters {
32 pub file: FileUpload,
34 pub purpose: FilePurpose,
36}
37
38#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
39#[serde(rename_all = "snake_case")]
40pub enum FilePurpose {
41 Assistants,
42 AssistantsOutput,
43 Batch,
44 BatchOutput,
45 #[serde(rename = "fine-tune")]
46 FineTune,
47 #[serde(rename = "fine-tune-results")]
48 FineTuneResults,
49 Vision,
50 #[default]
51 UserData,
52 Evals,
53}
54
55impl Display for FilePurpose {
56 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
57 write!(
58 f,
59 "{}",
60 match self {
61 FilePurpose::Assistants => "assistants",
62 FilePurpose::AssistantsOutput => "assistants_output",
63 FilePurpose::Batch => "batch",
64 FilePurpose::BatchOutput => "batch_output",
65 FilePurpose::FineTune => "fine-tune",
66 FilePurpose::FineTuneResults => "fine-tune-results",
67 FilePurpose::Vision => "vision",
68 FilePurpose::UserData => "user_data",
69 FilePurpose::Evals => "evals",
70 }
71 )
72 }
73}