ckandex

Crates.iockandex
lib.rsckandex
version0.6.3
sourcesrc
created_at2023-03-09 05:44:23.903323
updated_at2023-04-19 16:14:35.306523
descriptionAn indexer and API for CKAN, written in Rust.
homepage
repositoryhttps://github.com/RedstoneWizard08/CKANDex
max_upload_size
id805365
size49,692
(RedstoneWizard08)

documentation

README

CKANDex

crates.io

A rust-powered NetKAN resolver and indexer library, for both KSP 1 and KSP 2.

About

This library was created for the Wormhole project, as we needed a way to query and list mods in CKAN's NetKAN database. However, there wasn't an easy API to do this, as the NetKAN database is essentially a ton of JSON and YAML files crammed into a bunch of folders, so we had to develop our own solution.

Features

  • Blazingly fast (I know) query and filter system.
  • Low overhead.
  • Memory-efficient (somewhat).
  • Well caching.
  • Always up to date.
  • Easy-to-use API.
  • Made with Tokio and Serde.
  • Easy to integrate into existing codebases.

Example

Here's an example of CKANDex in action:

use ckandex::{refresh_data, run_server, KSP};
use dotenv::dotenv;
use tokio::main;

#[main]
pub async fn main() {
    dotenv().ok();

    refresh_data(KSP::KSP2, "netkan-ksp2").await;
    run_server("netkan-ksp2".to_string()).await;
}

For more examples, check out the example/ folder in this repo.

Contributing

This library is still WIP! Please don't be afraid to make feature requests, pull requests, and anything else. If you have any questions, or you have found any bugs, please create an issue! I'll be happy to help as soon as I can.

Code Style

The code style is as follows:

  • 4-space tab (spaces, not tabs)
  • Brackets on same lines as declarations (pub async fn main() { not pub async fn main()\n{)
  • Declared return (return ...; not ...) [Shut up, clippy. I prefer this.]
  • Look at the rest of the codebase for more.
Commit count: 17

cargo fmt