Skip to main content

Module data_source

Module data_source 

Source
Expand description

Database source port — query databases as pipeline data sources Database source port — query databases as pipeline data sources.

Defines the DataSourcePort trait for executing queries against relational or document databases and returning results as serde_json::Value rows.

§Architecture

stygian-graph
  ├─ DataSourcePort (this file)          ← always compiled
  └─ Adapters (adapters/)
       └─ DatabaseSource (feature="postgres")  → sqlx PgPool

§Example

use stygian_graph::ports::data_source::{DataSourcePort, QueryParams};
use serde_json::json;

async fn query<D: DataSourcePort>(db: &D) {
    let params = QueryParams {
        query: "SELECT id, name FROM users WHERE active = $1".into(),
        parameters: vec![json!(true)],
        limit: Some(100),
    };
    let rows = db.query(params).await.unwrap();
    for row in &rows {
        println!("{row}");
    }
}

Structs§

QueryParams
Parameters for a database query.

Traits§

DataSourcePort
Port: query a database and return rows as JSON values.