dsq_formats/reader/
options.rs1use crate::writer::CsvEncoding;
2
3#[derive(Debug, Clone)]
5pub struct ReadOptions {
6 pub max_rows: Option<usize>,
8 pub infer_schema: bool,
10 pub infer_schema_length: Option<usize>,
12 pub lazy: bool,
14 #[cfg(any(
16 feature = "csv",
17 feature = "json",
18 feature = "parquet",
19 feature = "avro"
20 ))]
21 pub schema: Option<polars::prelude::Schema>,
22 pub skip_rows: usize,
24 pub columns: Option<Vec<String>>,
26 pub parse_dates: bool,
28}
29
30impl Default for ReadOptions {
31 fn default() -> Self {
32 Self {
33 max_rows: None,
34 infer_schema: true,
35 infer_schema_length: Some(1000),
36 lazy: false,
37 #[cfg(any(
38 feature = "csv",
39 feature = "json",
40 feature = "parquet",
41 feature = "avro"
42 ))]
43 schema: None,
44 skip_rows: 0,
45 columns: None,
46 parse_dates: true,
47 }
48 }
49}
50
51#[derive(Debug, Clone)]
53pub enum FormatReadOptions {
54 Csv {
56 separator: u8,
58 has_header: bool,
60 quote_char: Option<u8>,
62 comment_char: Option<u8>,
64 null_values: Option<Vec<String>>,
66 encoding: CsvEncoding,
68 },
69 Parquet {
71 parallel: bool,
73 use_statistics: bool,
75 columns: Option<Vec<String>>,
77 },
78 Json {
80 lines: bool,
82 ignore_errors: bool,
84 },
85 Avro {
87 columns: Option<Vec<String>>,
89 },
90 Arrow {
92 columns: Option<Vec<String>>,
94 },
95}
96
97impl Default for FormatReadOptions {
98 fn default() -> Self {
99 FormatReadOptions::Csv {
100 separator: b',',
101 has_header: true,
102 quote_char: Some(b'"'),
103 comment_char: None,
104 null_values: None,
105 encoding: CsvEncoding::Utf8,
106 }
107 }
108}