build: optional parquet support

This commit is contained in:
mokurin000
2025-08-04 15:53:18 +08:00
parent 468f7c9873
commit fb03009f0d
5 changed files with 13 additions and 9 deletions

View File

@@ -11,6 +11,8 @@ compio = ["dep:compio"]
tokio = ["dep:tokio"] tokio = ["dep:tokio"]
bincode = ["dep:bincode"] bincode = ["dep:bincode"]
parquet = ['dep:parquet', 'dep:parquet_derive']
[dependencies] [dependencies]
snafu = { workspace = true } snafu = { workspace = true }
serde_json = { workspace = true } serde_json = { workspace = true }
@@ -45,5 +47,5 @@ aes = "0.8.4"
cipher = { version = "0.4.4", features = ["block-padding"] } cipher = { version = "0.4.4", features = ["block-padding"] }
bincode = { version = "2.0.1", optional = true } bincode = { version = "2.0.1", optional = true }
parquet = { workspace = true } parquet = { version = "56.0.0", optional = true }
parquet_derive = { version = "56.0.0" } parquet_derive = { version = "56.0.0", optional = true }

View File

@@ -1,7 +1,7 @@
use std::fmt::Display; use std::fmt::Display;
use bincode::{Decode, Encode}; use bincode::{Decode, Encode};
use parquet_derive::ParquetRecordWriter;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Serialize)] #[derive(Serialize)]
@@ -16,7 +16,8 @@ impl From<u32> for GetUserPreviewApi {
} }
} }
#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode, ParquetRecordWriter)] #[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)]
#[cfg_attr(feature = "parquet", derive(parquet_derive::ParquetRecordWriter))]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct GetUserPreviewApiResp { pub struct GetUserPreviewApiResp {
pub user_id: u32, pub user_id: u32,

View File

@@ -1,5 +1,4 @@
use bincode::{Decode, Encode}; use bincode::{Decode, Encode};
use parquet_derive::ParquetRecordWriter;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
@@ -42,7 +41,8 @@ impl From<GetUserRegionApiResp> for Vec<UserRegionFlatten> {
} }
} }
#[derive(Default, Debug, Clone, PartialEq, ParquetRecordWriter)] #[derive(Default, Debug, Clone, PartialEq)]
#[cfg_attr(feature = "parquet", derive(parquet_derive::ParquetRecordWriter))]
pub struct UserRegionFlatten { pub struct UserRegionFlatten {
pub user_id: u32, pub user_id: u32,
pub region_id: u32, pub region_id: u32,

View File

@@ -11,7 +11,7 @@ default = ["compio", "fetchall"]
compio = ["dep:compio", "sdgb-api/compio"] compio = ["dep:compio", "sdgb-api/compio"]
tokio = ["dep:tokio", "sdgb-api/tokio"] tokio = ["dep:tokio", "sdgb-api/tokio"]
fetchall = ["dep:redb", "dep:futures-util"] fetchall = ["dep:redb", "dep:futures-util", "dep:parquet", "sdgb-api/parquet"]
[dependencies] [dependencies]
sdgb-api = { workspace = true, features = ["bincode"] } sdgb-api = { workspace = true, features = ["bincode"] }
@@ -42,7 +42,7 @@ ctrlc = { version = "3.4.7", features = ["termination"] }
# magic macro # magic macro
crabtime = { workspace = true } crabtime = { workspace = true }
parquet = { workspace = true } parquet = { workspace = true, optional = true }
[build-dependencies] [build-dependencies]
version_check = "0.9.5" version_check = "0.9.5"

View File

@@ -26,7 +26,8 @@ def calculate_dxrating(music: dict):
try: try:
return music | {"dxRating": dx_rating(Decimal(level.pop()["difficulty"]), ach)} return music | {"dxRating": dx_rating(Decimal(level.pop()["difficulty"]), ach)}
except IndexError as _: except IndexError as _:
logger.warning(f"unknown level: {music_id} - {level_id}", file=stderr) if level_id != 10:
logger.warning(f"unknown level: {music_id} - {level_id}", file=stderr)
return music | {"dxRating": 0} return music | {"dxRating": 0}