diff --git a/src/db/doll.rs b/src/db/doll.rs index e5cb510..cdb9313 100644 --- a/src/db/doll.rs +++ b/src/db/doll.rs @@ -18,6 +18,22 @@ pub async fn get(mut db: DollTagsDb, ident: i64) -> sqlx::Result) -> sqlx::Result> { + let idents_sql_input = idents.iter().map(|_| "?").collect::>().join(", "); + + let sql = format!( + r#"select id from doll_profiles where id in ({})"#, + idents_sql_input + ); + let mut query = sqlx::query_scalar(&sql); + + for ident in idents { + query = query.bind(ident); + } + + query.fetch_all(&mut **db).await +} + pub async fn create(mut db: DollTagsDb, doll: CreateDollProfile<'_>) -> sqlx::Result { sqlx::query!( r#" diff --git a/src/main.rs b/src/main.rs index 6cc7997..ad76833 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,9 +2,10 @@ extern crate rocket; use std::collections::HashMap; -use db::doll; +use db::doll::{self, check_ids}; use db::schema::{CreateDollProfile, DollTags, DollTagsDb}; use regex::Regex; +use rng::generate_ids; use rocket::form::Form; use rocket::fs::{relative, FileServer}; use rocket::response::Redirect; @@ -37,8 +38,18 @@ fn index() -> Template { } #[get("/register")] -fn show_register() -> Template { - Template::render("register", context! {}) +async fn show_register(db: DollTagsDb) -> Template { + let mut ids_bundle = generate_ids(); + let occupied_ids = check_ids(db, &ids_bundle).await.expect("fuck"); + ids_bundle.retain(|&id| !occupied_ids.contains(&id)); + let ids = ids_bundle.iter().take(5).collect::>(); + + Template::render( + "register", + context! { + ids + }, + ) } // TODO: Validation diff --git a/templates/register.html.tera b/templates/register.html.tera index e88d6a4..bea077a 100644 --- a/templates/register.html.tera +++ b/templates/register.html.tera @@ -34,11 +34,9 @@

Or pick one of those pre-generated ones

- - - - - + {% for id in ids %} + + {% endfor %}