|
3 | 3 | use std::{ |
4 | 4 | cmp::Ordering, |
5 | 5 | collections::HashMap, |
6 | | - fmt, |
7 | | - fmt::Write, |
| 6 | + fmt::{self, Write}, |
8 | 7 | num::NonZeroU64, |
9 | 8 | path::{Path, PathBuf}, |
10 | 9 | str::FromStr, |
@@ -382,9 +381,9 @@ pub struct SubmitJobParams { |
382 | 381 | #[builder(default)] |
383 | 382 | pub pretty_ts: bool, |
384 | 383 | /// If `true`, a symbol field will be included with each text-encoded |
385 | | - /// record, reducing the need to look at the `symbology.json`. Only valid for |
386 | | - /// [`Encoding::Csv`] and [`Encoding::Json`]. |
387 | | - #[builder(default)] |
| 384 | + /// record. If `None`, will default to `true` for [`Encoding::Csv`] and [`Encoding::Json`] encodings, |
| 385 | + /// and `false` for [`Encoding::Dbn`]. |
| 386 | + #[builder(default_code = "*encoding != Encoding::Dbn")] |
388 | 387 | pub map_symbols: bool, |
389 | 388 | /// If `true`, files will be split by raw symbol. Cannot be requested with [`Symbols::All`]. |
390 | 389 | #[builder(default)] |
@@ -672,6 +671,7 @@ enum Header { |
672 | 671 |
|
673 | 672 | #[cfg(test)] |
674 | 673 | mod tests { |
| 674 | + use dbn::Dataset; |
675 | 675 | use reqwest::StatusCode; |
676 | 676 | use serde_json::json; |
677 | 677 | use time::macros::datetime; |
@@ -759,6 +759,45 @@ mod tests { |
759 | 759 | Ok(()) |
760 | 760 | } |
761 | 761 |
|
| 762 | + #[tokio::test] |
| 763 | + async fn test_submit_job_param_map_symbols() -> crate::Result<()> { |
| 764 | + const START: time::OffsetDateTime = datetime!(2023 - 06 - 14 00:00 UTC); |
| 765 | + const END: time::OffsetDateTime = datetime!(2023 - 06 - 17 00:00 UTC); |
| 766 | + |
| 767 | + let params = SubmitJobParams::builder() |
| 768 | + .dataset(Dataset::GlbxMdp3) |
| 769 | + .encoding(Encoding::Dbn) |
| 770 | + .symbols("ESM5") |
| 771 | + .schema(Schema::Mbo) |
| 772 | + .date_time_range(START..END) |
| 773 | + .build(); |
| 774 | + assert_eq!(params.encoding, Encoding::Dbn); |
| 775 | + assert_eq!(params.map_symbols, false); |
| 776 | + |
| 777 | + let params = SubmitJobParams::builder() |
| 778 | + .dataset(Dataset::GlbxMdp3) |
| 779 | + .encoding(Encoding::Csv) |
| 780 | + .symbols("ESM5") |
| 781 | + .schema(Schema::Mbo) |
| 782 | + .date_time_range(START..END) |
| 783 | + .build(); |
| 784 | + assert_eq!(params.encoding, Encoding::Csv); |
| 785 | + assert_eq!(params.map_symbols, true); |
| 786 | + |
| 787 | + let params = SubmitJobParams::builder() |
| 788 | + .dataset(Dataset::GlbxMdp3) |
| 789 | + .encoding(Encoding::Json) |
| 790 | + .symbols("ESM5") |
| 791 | + .schema(Schema::Mbo) |
| 792 | + .date_time_range(START..END) |
| 793 | + .map_symbols(false) |
| 794 | + .build(); |
| 795 | + assert_eq!(params.encoding, Encoding::Json); |
| 796 | + assert_eq!(params.map_symbols, false); |
| 797 | + |
| 798 | + Ok(()) |
| 799 | + } |
| 800 | + |
762 | 801 | #[tokio::test] |
763 | 802 | async fn test_list_jobs() -> crate::Result<()> { |
764 | 803 | const SCHEMA: Schema = Schema::Trades; |
|
0 commit comments