use crate::conclusion::{ConclusionCreateParams, ConclusionScope as AsyncConclusionScope};
use crate::error::Result;
use crate::types::conclusion::ConclusionPage;
use super::runtime::block_on;
#[derive(Clone)]
pub struct Conclusion {
inner: crate::Conclusion,
}
impl Conclusion {
pub(crate) fn new(inner: crate::Conclusion) -> Self {
Self { inner }
}
#[must_use]
pub fn id(&self) -> &str {
self.inner.id()
}
#[must_use]
pub fn content(&self) -> &str {
self.inner.content()
}
#[must_use]
pub fn observer_id(&self) -> &str {
self.inner.observer_id()
}
#[must_use]
pub fn observed_id(&self) -> &str {
self.inner.observed_id()
}
#[must_use]
pub fn session_id(&self) -> Option<&str> {
self.inner.session_id()
}
#[must_use]
pub fn created_at(&self) -> &chrono::DateTime<chrono::Utc> {
self.inner.created_at()
}
#[must_use]
pub fn workspace_id(&self) -> &str {
self.inner.workspace_id()
}
}
impl std::fmt::Debug for Conclusion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.inner.fmt(f)
}
}
impl std::fmt::Display for Conclusion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.inner.fmt(f)
}
}
#[derive(Clone)]
pub struct ConclusionScope {
inner: AsyncConclusionScope,
}
impl std::fmt::Debug for ConclusionScope {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("ConclusionScope")
.field("observer_id", &self.inner.observer_id())
.field("observed_id", &self.inner.observed_id())
.finish()
}
}
impl ConclusionScope {
pub(crate) fn new(inner: AsyncConclusionScope) -> Self {
Self { inner }
}
#[must_use]
pub fn observer_id(&self) -> &str {
self.inner.observer_id()
}
#[must_use]
pub fn observed_id(&self) -> &str {
self.inner.observed_id()
}
pub fn create(
&self,
conclusions: impl IntoIterator<Item = impl Into<ConclusionCreateParams>>,
) -> Result<Vec<Conclusion>> {
block_on(self.inner.create(conclusions))
.map(|v| v.into_iter().map(Conclusion::new).collect())
}
#[must_use]
pub fn representation(&self) -> BlockingConclusionRepresentationBuilder {
BlockingConclusionRepresentationBuilder {
inner: self.inner.representation(),
}
}
#[must_use]
pub fn list(&self) -> BlockingListConclusionsBuilder {
BlockingListConclusionsBuilder {
inner: self.inner.list(),
}
}
#[must_use]
pub fn query(&self, query: impl Into<String>) -> BlockingQueryConclusionsBuilder {
BlockingQueryConclusionsBuilder {
inner: self.inner.query(query),
}
}
pub fn delete(&self, conclusion_id: impl Into<String>) -> Result<()> {
block_on(self.inner.delete(conclusion_id))
}
}
pub struct BlockingConclusionRepresentationBuilder {
inner: crate::conclusion::ConclusionRepresentationBuilder,
}
impl BlockingConclusionRepresentationBuilder {
#[must_use]
pub fn search_query(self, val: impl Into<String>) -> Self {
Self {
inner: self.inner.search_query(val),
}
}
#[must_use]
pub fn search_top_k(self, val: u32) -> Self {
Self {
inner: self.inner.search_top_k(val),
}
}
#[must_use]
pub fn search_max_distance(self, val: f64) -> Self {
Self {
inner: self.inner.search_max_distance(val),
}
}
#[must_use]
pub fn include_most_frequent(self, val: bool) -> Self {
Self {
inner: self.inner.include_most_frequent(val),
}
}
#[must_use]
pub fn max_conclusions(self, val: u32) -> Self {
Self {
inner: self.inner.max_conclusions(val),
}
}
pub fn send(self) -> Result<String> {
block_on(self.inner.send())
}
}
impl std::fmt::Debug for BlockingConclusionRepresentationBuilder {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("BlockingConclusionRepresentationBuilder")
.finish_non_exhaustive()
}
}
pub struct BlockingListConclusionsBuilder {
inner: crate::conclusion::ListConclusionsBuilder,
}
impl BlockingListConclusionsBuilder {
#[must_use]
pub fn page(self, page: u32) -> Self {
Self {
inner: self.inner.page(page),
}
}
#[must_use]
pub fn size(self, size: u32) -> Self {
Self {
inner: self.inner.size(size),
}
}
#[must_use]
pub fn session(self, session_id: impl Into<String>) -> Self {
Self {
inner: self.inner.session(session_id),
}
}
#[must_use]
pub fn reverse(self, reverse: bool) -> Self {
Self {
inner: self.inner.reverse(reverse),
}
}
pub fn send(self) -> Result<ConclusionPage> {
block_on(self.inner.send())
}
}
impl std::fmt::Debug for BlockingListConclusionsBuilder {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("BlockingListConclusionsBuilder")
.finish_non_exhaustive()
}
}
pub struct BlockingQueryConclusionsBuilder {
inner: crate::conclusion::QueryConclusionsBuilder,
}
impl BlockingQueryConclusionsBuilder {
#[must_use]
pub fn top_k(self, top_k: u32) -> Self {
Self {
inner: self.inner.top_k(top_k),
}
}
#[must_use]
pub fn distance(self, distance: f64) -> Self {
Self {
inner: self.inner.distance(distance),
}
}
pub fn send(self) -> Result<Vec<Conclusion>> {
block_on(self.inner.send()).map(|v| v.into_iter().map(Conclusion::new).collect())
}
}
impl std::fmt::Debug for BlockingQueryConclusionsBuilder {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("BlockingQueryConclusionsBuilder")
.finish_non_exhaustive()
}
}