(columns: &OhlcvColumns)
| 288 | } |
| 289 | |
| 290 | fn to_polars_df(columns: &OhlcvColumns) -> Result<DataFrame, String> { |
| 291 | validate_lengths(columns)?; |
| 292 | df!( |
| 293 | "symbol" => columns.symbols.clone(), |
| 294 | "ts_us" => columns.timestamps_us.clone(), |
| 295 | "open" => columns.open.clone(), |
| 296 | "high" => columns.high.clone(), |
| 297 | "low" => columns.low.clone(), |
| 298 | "close" => columns.close.clone(), |
| 299 | "volume" => columns.volume.clone(), |
| 300 | "adj_close" => columns.adj_close.clone(), |
| 301 | ) |
| 302 | .map_err(|e| format!("polars df build failed: {e}")) |
| 303 | } |
| 304 | |
| 305 | fn df_to_ohlcv_columns(df: &DataFrame) -> Result<OhlcvColumns, String> { |
| 306 | let timestamps_us = df |
no test coverage detected