1
0

Route to view user's orgs (#742)

This commit is contained in:
Geometrically
2023-10-30 16:59:53 -07:00
committed by GitHub
parent 6cfd4637db
commit 89f1ddf4d7
7 changed files with 142 additions and 12 deletions

View File

@@ -162,7 +162,7 @@ impl Organization {
"
SELECT o.id, o.title, o.team_id, o.description, o.icon_url, o.color
FROM organizations o
WHERE o.id = ANY($1) OR o.title = ANY($2)
WHERE o.id = ANY($1) OR LOWER(o.title) = ANY($2)
GROUP BY o.id;
",
&organization_ids_parsed,

View File

@@ -1,6 +1,6 @@
use super::ids::{ProjectId, UserId};
use super::CollectionId;
use crate::database::models::DatabaseError;
use crate::database::models::{DatabaseError, OrganizationId};
use crate::database::redis::RedisPool;
use crate::models::ids::base62_impl::{parse_base62, to_base62};
use crate::models::users::{Badges, RecipientStatus};
@@ -307,6 +307,31 @@ impl User {
Ok(db_projects)
}
pub async fn get_organizations<'a, E>(
user_id: UserId,
exec: E,
) -> Result<Vec<OrganizationId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres> + Copy,
{
use futures::stream::TryStreamExt;
let orgs = sqlx::query!(
"
SELECT o.id FROM organizations o
INNER JOIN team_members tm ON tm.team_id = o.team_id AND tm.accepted = TRUE
WHERE tm.user_id = $1
",
user_id as UserId,
)
.fetch_many(exec)
.try_filter_map(|e| async { Ok(e.right().map(|m| OrganizationId(m.id))) })
.try_collect::<Vec<OrganizationId>>()
.await?;
Ok(orgs)
}
pub async fn get_collections<'a, E>(
user_id: UserId,
exec: E,