surrealdb/api/method/
signup.rs1use crate::api::conn::Method;
2use crate::api::conn::Param;
3use crate::api::conn::Router;
4use crate::api::Connection;
5use crate::api::Result;
6use crate::sql::Value;
7use serde::de::DeserializeOwned;
8use std::future::Future;
9use std::future::IntoFuture;
10use std::marker::PhantomData;
11use std::pin::Pin;
12
13#[derive(Debug)]
15#[must_use = "futures do nothing unless you `.await` or poll them"]
16pub struct Signup<'r, C: Connection, R> {
17 pub(super) router: Result<&'r Router<C>>,
18 pub(super) credentials: Result<Value>,
19 pub(super) response_type: PhantomData<R>,
20}
21
22impl<'r, Client, R> IntoFuture for Signup<'r, Client, R>
23where
24 Client: Connection,
25 R: DeserializeOwned,
26{
27 type Output = Result<R>;
28 type IntoFuture = Pin<Box<dyn Future<Output = Self::Output> + Send + Sync + 'r>>;
29
30 fn into_future(self) -> Self::IntoFuture {
31 let Signup {
32 router,
33 credentials,
34 ..
35 } = self;
36 Box::pin(async move {
37 let router = router?;
38 let mut conn = Client::new(Method::Signup);
39 conn.execute(router, Param::new(vec![credentials?])).await
40 })
41 }
42}