bookdata/
amazon.rs

1//! Structs defining Amazon data sets.
2use parquet_derive::ParquetRecordWriter;
3use serde::{Deserialize, Serialize};
4
5/// A rating as described in a source CSV file.
6#[derive(Serialize, Deserialize)]
7pub struct SourceRating {
8    pub user: String,
9    pub asin: String,
10    pub rating: f32,
11    pub timestamp: i64,
12}
13
14/// A review as it is described in a source JSON file.
15#[derive(Serialize, Deserialize)]
16pub struct SourceReview {
17    #[serde(rename = "reviewerID")]
18    pub user: String,
19    pub asin: String,
20    #[serde(rename = "overall")]
21    pub rating: f32,
22    #[serde(rename = "unixReviewTime")]
23    pub timestamp: i64,
24    pub summary: Option<String>,
25    #[serde(rename = "reviewText")]
26    pub text: Option<String>,
27    pub verified: bool,
28}
29
30/// Structure for scanned ratings.
31///
32/// This data structure is serialized to `ratings.parquet` in the Amazon directories.
33#[derive(ParquetRecordWriter, Serialize, Deserialize)]
34pub struct RatingRow {
35    pub user_id: i32,
36    pub asin: String,
37    pub rating: f32,
38    pub timestamp: i64,
39}
40
41/// Structure for scanned reviews.
42///
43/// This data structure is serialized to `reviews.parquet` in the Amazon directories.
44#[derive(ParquetRecordWriter, Serialize, Deserialize)]
45pub struct ReviewRow {
46    pub user_id: i32,
47    pub asin: String,
48    pub rating: f32,
49    pub timestamp: i64,
50    pub summary: String,
51    pub text: String,
52}