objectiveai_cli/command/plugins/logs/
list.rs1use std::pin::Pin;
6
7use futures::Stream;
8use objectiveai_sdk::cli::command::plugins::logs::list::{Request, ResponseItem};
9
10use crate::context::Context;
11use crate::error::Error;
12
13type ItemStream = Pin<Box<dyn Stream<Item = Result<ResponseItem, Error>> + Send>>;
14
15pub async fn execute(ctx: &Context, request: Request) -> Result<ItemStream, Error> {
16 let db = ctx.db_client().await?.clone();
17 let items = crate::db::logs::read_plugin_messages(
18 &db,
19 &request.owner,
20 &request.name,
21 &request.version,
22 request.after_id,
23 request.limit,
24 )
25 .await
26 .map_err(Error::from)?;
27 let stream = async_stream::stream! {
28 for item in items {
29 yield Ok(item);
30 }
31 };
32 Ok(Box::pin(stream))
33}
34
35pub mod request_schema {
36 use objectiveai_sdk::cli::command::plugins::logs::list as sdk;
37 use objectiveai_sdk::cli::command::plugins::logs::list::request_schema::{Request, Response};
38
39 use crate::context::Context;
40 use crate::error::Error;
41
42 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
43 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Request)))
44 }
45}
46
47pub mod response_schema {
48 use objectiveai_sdk::cli::command::plugins::logs::list as sdk;
49 use objectiveai_sdk::cli::command::plugins::logs::list::response_schema::{Request, Response};
50
51 use crate::context::Context;
52 use crate::error::Error;
53
54 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
55 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::ResponseItem)))
56 }
57}