Add wallet address to data returned by /api/v1/accounts/{account_id} method

This commit is contained in:
silverpill 2022-02-05 19:49:14 +00:00
parent 20a7e127c7
commit 464d4886fa
3 changed files with 36 additions and 1 deletions

View file

@ -108,6 +108,20 @@ paths:
type: array
items:
$ref: '#/components/schemas/Relationship'
/api/v1/accounts/{account_id}:
get:
summary: View information about a profile.
parameters:
- $ref: '#/components/parameters/account_id'
responses:
200:
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
404:
description: Profile not found
/api/v1/accounts/{account_id}/statuses:
get:
summary: Posts created by the given actor.

View file

@ -24,6 +24,7 @@ use crate::mastodon_api::timelines::types::TimelineQueryParams;
use crate::models::posts::queries::get_posts_by_author;
use crate::models::profiles::queries::{
get_profile_by_id,
get_wallet_address,
update_profile,
};
use crate::models::relationships::queries::{
@ -103,7 +104,9 @@ async fn get_account(
) -> Result<HttpResponse, HttpError> {
let db_client = &**get_database_client(&db_pool).await?;
let profile = get_profile_by_id(db_client, &account_id).await?;
let account = Account::from_profile(profile, &config.instance_url());
let maybe_wallet_address = get_wallet_address(db_client, &profile.id).await?;
let mut account = Account::from_profile(profile, &config.instance_url());
account.wallet_address = maybe_wallet_address;
Ok(HttpResponse::Ok().json(account))
}

View file

@ -357,6 +357,24 @@ pub async fn search_profile_by_wallet_address(
Ok(profiles)
}
pub async fn get_wallet_address(
db_client: &impl GenericClient,
profile_id: &Uuid,
) -> Result<Option<String>, DatabaseError> {
let maybe_row = db_client.query_opt(
"
SELECT user_account.wallet_address
FROM actor_profile
LEFT JOIN user_account ON (actor_profile.id = user_account.id)
WHERE actor_profile.id = $1
",
&[&profile_id],
).await?;
let row = maybe_row.ok_or(DatabaseError::NotFound("profile"))?;
let wallet_address = row.try_get("wallet_address")?;
Ok(wallet_address)
}
pub async fn update_follower_count(
db_client: &impl GenericClient,
profile_id: &Uuid,