use std::pin::Pin;
use futures::Stream;
use objectiveai_sdk::cli::command::plugins::logs::list::{Request, ResponseItem};
use crate::context::Context;
use crate::error::Error;
type ItemStream = Pin<Box<dyn Stream<Item = Result<ResponseItem, Error>> + Send>>;
pub async fn execute(ctx: &Context, request: Request) -> Result<ItemStream, Error> {
let db = ctx.db_client().await?.clone();
let items = crate::db::logs::read_plugin_messages(
&db,
&request.owner,
&request.name,
&request.version,
request.after_id,
request.limit,
)
.await
.map_err(Error::from)?;
let stream = async_stream::stream! {
for item in items {
yield Ok(item);
}
};
Ok(Box::pin(stream))
}
pub mod request_schema {
use objectiveai_sdk::cli::command::plugins::logs::list as sdk;
use objectiveai_sdk::cli::command::plugins::logs::list::request_schema::{Request, Response};
use crate::context::Context;
use crate::error::Error;
pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Request)))
}
}
pub mod response_schema {
use objectiveai_sdk::cli::command::plugins::logs::list as sdk;
use objectiveai_sdk::cli::command::plugins::logs::list::response_schema::{Request, Response};
use crate::context::Context;
use crate::error::Error;
pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::ResponseItem)))
}
}