Add collab APIs for new signup flow
Co-authored-by: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
f081dbced5
commit
d85ecc8302
3 changed files with 338 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
|||
use crate::{
|
||||
auth,
|
||||
db::{ProjectId, User, UserId},
|
||||
db::{ProjectId, Signup, SignupInvite, SignupRedemption, User, UserId},
|
||||
rpc::{self, ResultExt},
|
||||
AppState, Error, Result,
|
||||
};
|
||||
|
@ -45,6 +45,10 @@ pub fn routes(rpc_server: &Arc<rpc::Server>, state: Arc<AppState>) -> Router<Bod
|
|||
)
|
||||
.route("/user_activity/counts", get(get_active_user_counts))
|
||||
.route("/project_metadata", get(get_project_metadata))
|
||||
.route("/signups", post(create_signup))
|
||||
.route("/signup/redeem", post(redeem_signup))
|
||||
.route("/signups_invites", get(get_signup_invites))
|
||||
.route("/signups_invites_sent", post(record_signup_invites_sent))
|
||||
.layer(
|
||||
ServiceBuilder::new()
|
||||
.layer(Extension(state))
|
||||
|
@ -415,3 +419,39 @@ async fn get_user_for_invite_code(
|
|||
) -> Result<Json<User>> {
|
||||
Ok(Json(app.db.get_user_for_invite_code(&code).await?))
|
||||
}
|
||||
|
||||
async fn create_signup(
|
||||
Json(params): Json<Signup>,
|
||||
Extension(app): Extension<Arc<AppState>>,
|
||||
) -> Result<()> {
|
||||
app.db.create_signup(params).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn redeem_signup(
|
||||
Json(redemption): Json<SignupRedemption>,
|
||||
Extension(app): Extension<Arc<AppState>>,
|
||||
) -> Result<()> {
|
||||
app.db.redeem_signup(redemption).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn record_signup_invites_sent(
|
||||
Json(params): Json<Vec<SignupInvite>>,
|
||||
Extension(app): Extension<Arc<AppState>>,
|
||||
) -> Result<()> {
|
||||
app.db.record_signup_invites_sent(¶ms).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct GetSignupInvitesParams {
|
||||
pub count: usize,
|
||||
}
|
||||
|
||||
async fn get_signup_invites(
|
||||
Query(params): Query<GetSignupInvitesParams>,
|
||||
Extension(app): Extension<Arc<AppState>>,
|
||||
) -> Result<Json<Vec<SignupInvite>>> {
|
||||
Ok(Json(app.db.get_signup_invites(params.count).await?))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue