Add user lookup.

This commit is contained in:
Paul Makles
2020-01-26 11:53:33 +00:00
parent 0021ada639
commit 7f0baa2a89
3 changed files with 34 additions and 4 deletions

View File

@@ -1,4 +1,3 @@
use crate::auth::User;
use crate::database;
use crate::email;

View File

@@ -6,5 +6,5 @@ mod user;
pub fn mount(rocket: Rocket) -> Rocket {
rocket
.mount("/api/account", routes![ account::create, account::verify_email, account::resend_email, account::login ])
.mount("/api/users", routes![ user::me ])
.mount("/api/users", routes![ user::me, user::lookup ])
}

View File

@@ -1,7 +1,10 @@
use crate::auth::User;
use crate::database;
use rocket_contrib::json::{ JsonValue };
use bson::{ doc };
use rocket_contrib::json::{ Json, JsonValue };
use serde::{ Serialize, Deserialize };
use mongodb::options::FindOptions;
use bson::{ bson, doc };
#[get("/@me")]
pub fn me(user: User) -> JsonValue {
@@ -16,3 +19,31 @@ pub fn me(user: User) -> JsonValue {
"created_timestamp": id.datetime().timestamp(),
})
}
#[derive(Serialize, Deserialize)]
pub struct Query {
username: String,
}
#[post("/lookup", data = "<query>")]
pub fn lookup(_user: User, query: Json<Query>) -> JsonValue {
let col = database::get_db().collection("users");
let users = col.find(
doc! { "username": query.username.clone() },
FindOptions::builder().limit(10).build()
).expect("Failed user lookup");
let mut results = Vec::new();
for user in users {
let u = user.expect("Failed to unwrap user.");
results.push(
json!({
"id": u.get_str("_id").expect("DB[id]"),
"username": u.get_str("username").expect("DB[username]")
})
);
}
json!(results)
}