Skip to content

Commit

Permalink
Tidying up dependencies - making serde a default feature
Browse files Browse the repository at this point in the history
  • Loading branch information
Hukadan committed Mar 7, 2024
1 parent 7396927 commit 0caab2e
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 15 deletions.
8 changes: 5 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@ keywords = ["OpenBSD", "PlayOnBSD"]
rust-version = "1.68.0"

[dependencies]
serde = "1"
serde_json = "1"
serde_derive = "1"
serde = { version = "1", features = ["derive"], optional = true }
regex = "1.7.3"
hash32 = "0.3.1"
paste = "1.0.12"

[features]
default = [ "serde" ]
serde = ["dep:serde"]
5 changes: 4 additions & 1 deletion src/db/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
use crate::models::Game;

use paste::paste;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

macro_rules! load_game {
Expand Down Expand Up @@ -46,7 +48,8 @@ macro_rules! add_game_to {
}

/// Queryable representation of the PlayOnBSD database
#[derive(Default)]
#[derive(Default, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct GameDataBase {
/// HashMap using the game uid as key and the corresponding game as value
pub(crate) games: HashMap<u32, Game>,
Expand Down
4 changes: 4 additions & 0 deletions src/db/game_filer.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
use crate::{Game, SearchType};

use paste::paste;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};

macro_rules! gf_setter {
($field:ident) => {
Expand All @@ -13,6 +16,7 @@ macro_rules! gf_setter {
}

#[derive(Clone, Default, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct GameFilter {
/// The name of the game.
pub name: Option<String>,
Expand Down
9 changes: 9 additions & 0 deletions src/db/queries.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,15 @@ impl GameDataBase {
search_games_by!(dev);
search_games_by!(publi);

pub fn search_game_by_filter(
&self,
search_type: &SearchType,
filter: &GameFilter,
) -> QueryResult<&Game> {
let games = filter.filter_games(self.games.values().collect(), search_type);
QueryResult::new(games)
}

pub fn get_all_games(&self) -> QueryResult<&Game> {
let mut games: Vec<&Game> = self.games.values().collect();
games.sort();
Expand Down
3 changes: 3 additions & 0 deletions src/db/query_result.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ use crate::db::Item;
use crate::{Game, GameFilter, SearchType};

use paste::paste;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};

macro_rules! filter_games_by {
($field:ident) => {
Expand All @@ -20,6 +22,7 @@ macro_rules! filter_games_by {

/// Queryable representation of the result of a query
#[derive(Default, Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct QueryResult<T> {
/// Number of items in the query result
pub count: usize,
Expand Down
3 changes: 0 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,6 @@
pub mod db;
#[allow(clippy::tabs_in_doc_comments)]
pub mod models;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;

pub use crate::db::game_filer::GameFilter;
pub use crate::db::GameDataBase;
Expand Down
9 changes: 6 additions & 3 deletions src/models/game.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ use crate::models::store_links::StoreLinks;
use crate::SearchType;

use paste::paste;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::cmp::{Ordering, PartialOrd};
use std::fmt;

Expand Down Expand Up @@ -88,7 +90,8 @@ macro_rules! game_contains {
/// ### PartialOrd
/// The [`Game`] struct implements the [`core::cmp::PartialOrd`] trait
/// and [`Game`] objects are ordered according to their name (without The or A).
#[derive(Serialize, Clone, Default, Debug, PartialEq, Eq)]
#[derive(Clone, Default, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Game {
/// An unique identifier generated from the name and added fields
pub uid: u32,
Expand All @@ -113,10 +116,10 @@ pub struct Game {
/// Released year (can be text such as "early access".
pub year: Option<String>,
/// Developer.
#[serde(rename = "dev")]
#[cfg_attr(feature = "serde", serde(rename = "dev"))]
pub devs: Option<Vec<String>>,
/// Publisher.
#[serde(rename = "pub")]
#[cfg_attr(feature = "serde", serde(rename = "pub"))]
pub publis: Option<Vec<String>>,
/// Version of the game.
pub version: Option<String>,
Expand Down
14 changes: 9 additions & 5 deletions src/models/store_links.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
//! Provides a representations for the store links associated to each game.
use std::fmt::Display;

use regex::Regex;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::fmt::Display;

/// Represents the store in which the game is available
#[derive(Serialize, Clone, Default, Debug, PartialEq, Eq)]
#[derive(Clone, Default, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum Store {
Steam,
Gog,
Expand All @@ -17,7 +19,8 @@ pub enum Store {
}

/// Represent a store link
#[derive(Serialize, Clone, Default, Debug, PartialEq, Eq)]
#[derive(Clone, Default, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct StoreLink {
/// Store related to the link
pub store: Store,
Expand Down Expand Up @@ -89,7 +92,8 @@ fn get_steam_id(url: &str) -> Option<usize> {
}

/// Represent a collection of store links
#[derive(Serialize, Clone, Default, Debug, PartialEq, Eq)]
#[derive(Clone, Default, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct StoreLinks(pub Vec<StoreLink>);

impl StoreLinks {
Expand Down

0 comments on commit 0caab2e

Please sign in to comment.