Skip to content

Commit c1a09b7

Browse files
Tyrubiassyphar
authored andcommitted
fix(topbar): support teams in topbar owner links
1 parent b1b4ddc commit c1a09b7

13 files changed

+110
-44
lines changed

.sqlx/query-d9fdce61d807d32b2c700c29e0b8100b5abf2d283016f48f468d823bd85da551.json renamed to .sqlx/query-24c697ed817d33dbdfb0e5126feaf3f5addfba6ed45f46afdc523b324da2cbab.json

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-5deb5bb52b993cc54f7b48714c77903829961a7b50ae4bfbdb9b34c38f374932.json

Lines changed: 0 additions & 23 deletions
This file was deleted.

.sqlx/query-87952bd450ed2c13b99bd502a73a84edd7d17e6171523ebbd57f1d9dd7c9b46c.json

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-073b7016109d65c3d7907ce2b32b47018ce25577d6d9267da38edb53828ada41.json renamed to .sqlx/query-b6273727360630c958b856427cb9dacc3289dcadf82061774866fec3a62669c5.json

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-8e1cb8355b3586b849494ae1cbde9b034ca01090469a84df2d9af4446f9d9451.json renamed to .sqlx/query-ee9dddd0c37c0e89eab1feaddd27e5e9c7016a1b8b35b031cb05b4d0802b6be1.json

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE owners
2+
DROP COLUMN IF EXISTS kind;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ALTER TABLE owners
2+
ADD COLUMN IF NOT EXISTS kind TEXT NOT NULL CHECK (
3+
kind IN ('user', 'team')
4+
) DEFAULT 'user';

src/db/add_package.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -454,14 +454,16 @@ async fn update_owners_in_database(
454454
for owner in owners {
455455
oids.push(
456456
sqlx::query_scalar!(
457-
"INSERT INTO owners (login, avatar)
458-
VALUES ($1, $2)
457+
"INSERT INTO owners (login, avatar, kind)
458+
VALUES ($1, $2, $3)
459459
ON CONFLICT (login) DO UPDATE
460460
SET
461-
avatar = EXCLUDED.avatar
461+
avatar = EXCLUDED.avatar,
462+
kind = EXCLUDED.kind
462463
RETURNING id",
463464
owner.login,
464-
owner.avatar
465+
owner.avatar,
466+
owner.kind,
465467
)
466468
.fetch_one(&mut *conn)
467469
.await?,
@@ -647,18 +649,20 @@ mod test {
647649
let owner1 = CrateOwner {
648650
avatar: "avatar".into(),
649651
login: "login".into(),
652+
kind: "user".into(),
650653
};
651654

652655
update_owners_in_database(&mut conn, &[owner1.clone()], crate_id).await?;
653656

654657
let owner_def = sqlx::query!(
655-
"SELECT login, avatar
658+
"SELECT login, avatar, kind
656659
FROM owners"
657660
)
658661
.fetch_one(&mut *conn)
659662
.await?;
660663
assert_eq!(owner_def.login, owner1.login);
661664
assert_eq!(owner_def.avatar, owner1.avatar);
665+
assert_eq!(owner_def.kind, owner1.kind);
662666

663667
let owner_rel = sqlx::query!(
664668
"SELECT o.login
@@ -688,6 +692,7 @@ mod test {
688692
&[CrateOwner {
689693
login: "login".into(),
690694
avatar: "avatar".into(),
695+
kind: "user".into(),
691696
}],
692697
crate_id,
693698
)
@@ -696,14 +701,16 @@ mod test {
696701
let updated_owner = CrateOwner {
697702
login: "login".into(),
698703
avatar: "avatar2".into(),
704+
kind: "team".into(),
699705
};
700706
update_owners_in_database(&mut conn, &[updated_owner.clone()], crate_id).await?;
701707

702-
let owner_def = sqlx::query!("SELECT login, avatar FROM owners")
708+
let owner_def = sqlx::query!("SELECT login, avatar, kind FROM owners")
703709
.fetch_one(&mut *conn)
704710
.await?;
705711
assert_eq!(owner_def.login, updated_owner.login);
706712
assert_eq!(owner_def.avatar, updated_owner.avatar);
713+
assert_eq!(owner_def.kind, updated_owner.kind);
707714

708715
let owner_rel = sqlx::query!(
709716
"SELECT o.login
@@ -733,6 +740,7 @@ mod test {
733740
&[CrateOwner {
734741
login: "login".into(),
735742
avatar: "avatar".into(),
743+
kind: "user".into(),
736744
}],
737745
crate_id,
738746
)
@@ -742,6 +750,7 @@ mod test {
742750
.map(|i| CrateOwner {
743751
login: format!("login{i}"),
744752
avatar: format!("avatar{i}"),
753+
kind: "user".into(),
745754
})
746755
.collect();
747756

src/db/delete.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ mod tests {
328328
.add_owner(CrateOwner {
329329
login: "malicious actor".into(),
330330
avatar: "https://example.org/malicious".into(),
331+
kind: "user".into(),
331332
})
332333
.create()?;
333334
assert!(release_exists(&mut db.conn(), v1)?);
@@ -358,6 +359,7 @@ mod tests {
358359
.add_owner(CrateOwner {
359360
login: "Peter Rabbit".into(),
360361
avatar: "https://example.org/peter".into(),
362+
kind: "user".into(),
361363
})
362364
.create()?;
363365
assert!(release_exists(&mut db.conn(), v2)?);

src/registry_api.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ impl Default for ReleaseData {
4646
pub struct CrateOwner {
4747
pub(crate) avatar: String,
4848
pub(crate) login: String,
49+
pub(crate) kind: String,
4950
}
5051

5152
impl RegistryApi {
@@ -168,6 +169,8 @@ impl RegistryApi {
168169
avatar: Option<String>,
169170
#[serde(default)]
170171
login: Option<String>,
172+
#[serde(default)]
173+
kind: Option<String>,
171174
}
172175

173176
let response: Response = retry_async(
@@ -198,6 +201,7 @@ impl RegistryApi {
198201
.map(|data| CrateOwner {
199202
avatar: data.avatar.unwrap_or_default(),
200203
login: data.login.unwrap_or_default(),
204+
kind: data.kind.unwrap_or("user".into()),
201205
})
202206
.collect();
203207

0 commit comments

Comments
 (0)