use actix_web::{get, web, HttpResponse};
use serde::{Deserialize, Serialize};

use sqlx::{Pool, Sqlite};

use crate::db::DbRelay;

use crate::handlers::errors::ApiError;
use crate::models::{convert_db_list, Relay};

#[derive(Debug, Serialize, Deserialize)]
pub struct RequestRelay {
	name: String,
	tags: Vec<String>,
}

#[get("/api/v1/relays")]
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, ApiError> {
	let mut pool_conn = pool.acquire().await?;

	let db_relays = DbRelay::get_all(&mut pool_conn).await?;

	let relays: Vec<Relay> = convert_db_list(&mut pool_conn, db_relays)?;

	Ok(HttpResponse::Ok().json(relays))
}