Trait stac_server::Backend

source ·
pub trait Backend:
    Clone
    + Sync
    + Send
    + 'static {
    // Required methods
    fn has_item_search(&self) -> bool;
    fn collections(
        &self,
    ) -> impl Future<Output = Result<Vec<Collection>>> + Send;
    fn collection(
        &self,
        id: &str,
    ) -> impl Future<Output = Result<Option<Collection>>> + Send;
    fn add_collection(
        &mut self,
        collection: Collection,
    ) -> impl Future<Output = Result<()>> + Send;
    fn add_item(
        &mut self,
        item: Item,
    ) -> impl Future<Output = Result<()>> + Send;
    fn items(
        &self,
        collection_id: &str,
        items: Items,
    ) -> impl Future<Output = Result<Option<ItemCollection>>> + Send;
    fn item(
        &self,
        collection_id: &str,
        item_id: &str,
    ) -> impl Future<Output = Result<Option<Item>>> + Send;
    fn search(
        &self,
        search: Search,
    ) -> impl Future<Output = Result<ItemCollection>> + Send;
}
Expand description

Storage backend for a STAC API.

Required Methods§

Returns true if this backend has item search capabilities.

§Examples
use stac_server::{MemoryBackend, Backend};

assert!(MemoryBackend::new().has_item_search());
source

fn collections(&self) -> impl Future<Output = Result<Vec<Collection>>> + Send

Returns all collections.

§Examples
use stac_server::{MemoryBackend, Backend};
let backend = MemoryBackend::new();
let collections = backend.collections().await.unwrap();
assert!(collections.is_empty());
source

fn collection( &self, id: &str, ) -> impl Future<Output = Result<Option<Collection>>> + Send

Returns a single collection.

§Examples
use stac_server::{MemoryBackend, Backend};
let backend = MemoryBackend::new();
let collection = backend.collection("does-not-exist").await.unwrap();
assert!(collection.is_none());
source

fn add_collection( &mut self, collection: Collection, ) -> impl Future<Output = Result<()>> + Send

Adds a collection.

§Examples
use stac::Collection;
use stac_server::{MemoryBackend, Backend};

let mut backend = MemoryBackend::new();
backend.add_collection(Collection::new("an-id", "a description")).await.unwrap();
source

fn add_item(&mut self, item: Item) -> impl Future<Output = Result<()>> + Send

Adds an item.

If the item doesn’t have its collection field set, or a collection with that id does not exist in the backend, throws an error.

§Examples
use stac::{Collection, Item};
use stac_server::{MemoryBackend, Backend};

let mut backend = MemoryBackend::new();
assert!(backend.add_item(Item::new("item-id")).await.is_err());

backend.add_collection(Collection::new("collection-id", "a description")).await.unwrap();
backend.add_item(Item::new("item-id").collection("collection-id")).await.unwrap();
source

fn items( &self, collection_id: &str, items: Items, ) -> impl Future<Output = Result<Option<ItemCollection>>> + Send

Retrieves items for a given collection.

§Examples
use stac::{Collection, Item};
use stac_api::Items;
use stac_server::{MemoryBackend, Backend};

let mut backend = MemoryBackend::new();
backend.add_collection(Collection::new("collection-id", "a description")).await.unwrap();
backend.add_item(Item::new("item-id").collection("collection-id")).await.unwrap();
let items = backend.items("collection-id", Items::default()).await.unwrap();
source

fn item( &self, collection_id: &str, item_id: &str, ) -> impl Future<Output = Result<Option<Item>>> + Send

Retrieves an item from a collection.

§Examples
use stac::{Collection, Item};
use stac_server::{MemoryBackend, Backend};

let mut backend = MemoryBackend::new();
backend.add_collection(Collection::new("collection-id", "a description")).await.unwrap();
backend.add_item(Item::new("item-id").collection("collection-id")).await.unwrap();
let item = backend.item("collection-id", "item-id").await.unwrap().unwrap();
source

fn search( &self, search: Search, ) -> impl Future<Output = Result<ItemCollection>> + Send

Searches a backend.

§Examples
use stac_api::Search;
use stac_server::{MemoryBackend, Backend};

let mut backend = MemoryBackend::new();
let item_collection = backend.search(Search::default()).await.unwrap();

Object Safety§

This trait is not object safe.

Implementors§