flagrant 0.0.2

CLI powered feature-flagging
Documentation
use hugsqlx::{params, HugSqlx};
use sqlx::{Pool, Sqlite};

use crate::errors::FlagrantError;
use flagrant_types::Project;

#[derive(HugSqlx)]
#[queries = "resources/db/queries/projects.sql"]
struct Projects {}

pub async fn create(pool: &Pool<Sqlite>, name: String) -> anyhow::Result<Project> {
    let project = Projects::create_project::<_, Project>(pool, params!(name))
        .await
        .map_err(|e| FlagrantError::QueryFailed("Could create a project", e))?;

    Ok(project)
}

pub async fn fetch(pool: &Pool<Sqlite>, project_id: u16) -> anyhow::Result<Project> {
    let project = Projects::fetch_project::<_, Project>(pool, params!(project_id))
        .await
        .map_err(|e| FlagrantError::QueryFailed("Could fetch project", e))?;

    Ok(project)
}