#openbsd #play-on-bsd #query #hash-map #primitive #filter

pobsd-db

原生数据库,用于查询 PlayOnBSD 数据库

5 个版本

0.1.4 2023 年 3 月 29 日
0.1.3 2023 年 3 月 27 日
0.1.2 2023 年 3 月 27 日
0.1.1 2023 年 3 月 26 日
0.1.0 2023 年 3 月 26 日

#1762数据库接口

Download history

每月 112 次下载
用于 wcip

MIT 许可证

19KB
361 代码行

Build Clippy Crates.io (latest) Docs.rs

pobsd-db

pobsd-db 提供了一个依赖 HashMap 的原生数据库,并提供了一系列方法来查询和过滤 PlayOnBSD 数据库。

有关详细信息,请参阅 docs.rs


lib.rs:

此库提供了一系列方法,以友好方式查询 PlayOnBSD 数据库,无需处理 SQL 数据库。

示例

从 PlayOnBSD 数据库创建一个 GameDataBase。

extern crate pobsd_db;
extern crate pobsd_parser;
use pobsd_db::GameDataBase;
use pobsd_parser::{Game, Parser, ParserResult, ParsingMode};
// loading the games from the database
let games = match Parser::new(ParsingMode::Strict)
       .load_from_file("games.db")
       .expect("Could not open the file")
   {
       ParserResult::WithoutError(games) => games,
       ParserResult::WithError(games, _) => games,
   };
GameDataBase::new(games);

通过名称获取游戏。

if let Some(game) = db.get_game_by_name("My Game"){
    assert_eq!(&game.name, "My Game");
};

获取与给定标签相关联的所有游戏。

let game_query = db.get_game_by_tag("indie");
// check the first element of the query
if let Some(game) = game_query.get(0) {
    if let Some(tags) = &game.tags {
        assert!(tags.join(" ").contains("indie"));
    };
};

依赖项

~3–5MB
~93K SLoC