pooly 0.2.1

A protobuf to Postgres adapter + connection pooling middleware.
Documentation
use std::sync::Arc;

use actix_web::HttpResponse;
use actix_web::post;
use actix_web::Result;
use actix_web::web::{Data, Json};

use crate::models::auth::jwt::JwtKeyCreateCommand;
use crate::services::initialize::InitializationService;
use crate::services::secrets::LocalSecretsService;

#[post("/v1/secrets/initialize")]
pub async fn initialize(service: Data<Arc<InitializationService>>,
                        request: Json<JwtKeyCreateCommand>) -> Result<HttpResponse> {
    match service.initialize(request.0.into()) {
        Ok(shares) => Ok(HttpResponse::Ok().json(shares)),
        Err(err) => Ok(HttpResponse::InternalServerError().json(err))
    }
}

#[post("/v1/secrets/clear")]
pub async fn clear(service: Data<Arc<InitializationService>>) -> Result<HttpResponse> {
    match service.clear() {
        Ok(_) => Ok(HttpResponse::Ok().finish()),
        Err(err) => Ok(HttpResponse::InternalServerError().json(err))
    }
}

#[post("/v1/secrets/unseal")]
pub async fn unseal(service: Data<Arc<LocalSecretsService>>) -> Result<HttpResponse> {
    match service.unseal() {
        Ok(_) => Ok(HttpResponse::Ok().finish()),
        Err(err) => Ok(HttpResponse::InternalServerError().json(err))
    }
}