simplify retrieval in find_by_host()
we can use "first()" instead of limit(1).load().etc… since on a UNIQUE field, we only expect 1 result. first() returns QueryResult, which is Result<T, diesel::Error>, so we need to implement a converter for that error type. This commit addresses @fdb-hiroshima's review.
This commit is contained in:
parent
1c34ac38f7
commit
8e6b1ab86e
@ -1,6 +1,6 @@
|
||||
use activitypub::{actor::Group, collection::OrderedCollection, object::Image, CustomObject};
|
||||
use chrono::NaiveDateTime;
|
||||
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl, SaveChangesDsl};
|
||||
use diesel::{self, ExpressionMethods, QueryDsl, QueryResult, RunQueryDsl, SaveChangesDsl};
|
||||
use openssl::{
|
||||
hash::MessageDigest,
|
||||
pkey::{PKey, Private},
|
||||
@ -195,14 +195,10 @@ impl Blog {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn find_by_host(c: &PlumeRocket, host: Host) -> Result<Blog> {
|
||||
let from_db = blogs::table
|
||||
pub fn find_by_host(c: &PlumeRocket, host: Host) -> QueryResult<Blog> {
|
||||
blogs::table
|
||||
.filter(blogs::custom_domain.eq(host))
|
||||
.limit(1)
|
||||
.load::<Blog>(&*c.conn)?
|
||||
.into_iter()
|
||||
.next();
|
||||
from_db.ok_or(Error::NotFound)
|
||||
.first::<Blog>(&*c.conn)
|
||||
}
|
||||
|
||||
fn fetch_from_webfinger(c: &PlumeRocket, acct: &str) -> Result<Blog> {
|
||||
|
@ -14,6 +14,12 @@ impl From<Error> for ErrorPage {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<diesel::result::Error> for ErrorPage {
|
||||
fn from(err: diesel::result::Error) -> ErrorPage {
|
||||
ErrorPage(plume_models::Error::Db(err))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'r> Responder<'r> for ErrorPage {
|
||||
fn respond_to(self, req: &Request) -> response::Result<'r> {
|
||||
let rockets = req.guard::<PlumeRocket>().unwrap();
|
||||
|
Loading…
Reference in New Issue
Block a user