diff --git a/.sqlx/query-16dfb0d87266568fb8a84585614387c8bfa4790b9e8d317159b37397e42b7ceb.json b/.sqlx/query-16dfb0d87266568fb8a84585614387c8bfa4790b9e8d317159b37397e42b7ceb.json index a3ae9ba9b..591b42a07 100644 --- a/.sqlx/query-16dfb0d87266568fb8a84585614387c8bfa4790b9e8d317159b37397e42b7ceb.json +++ b/.sqlx/query-16dfb0d87266568fb8a84585614387c8bfa4790b9e8d317159b37397e42b7ceb.json @@ -11,7 +11,7 @@ { "ordinal": 1, "name": "avatar", - "type_info": "Varchar" + "type_info": "Text" }, { "ordinal": 2, diff --git a/.sqlx/query-1e48486ba272a4e2ea8793114e412c14ed13f652419b1467c21e1829f31cd573.json b/.sqlx/query-1e48486ba272a4e2ea8793114e412c14ed13f652419b1467c21e1829f31cd573.json index 90d8b6731..438d11b06 100644 --- a/.sqlx/query-1e48486ba272a4e2ea8793114e412c14ed13f652419b1467c21e1829f31cd573.json +++ b/.sqlx/query-1e48486ba272a4e2ea8793114e412c14ed13f652419b1467c21e1829f31cd573.json @@ -11,7 +11,7 @@ { "ordinal": 1, "name": "avatar", - "type_info": "Varchar" + "type_info": "Text" }, { "ordinal": 2, diff --git a/.sqlx/query-87952bd450ed2c13b99bd502a73a84edd7d17e6171523ebbd57f1d9dd7c9b46c.json b/.sqlx/query-87952bd450ed2c13b99bd502a73a84edd7d17e6171523ebbd57f1d9dd7c9b46c.json index 9b7cbc9f7..8aedc7865 100644 --- a/.sqlx/query-87952bd450ed2c13b99bd502a73a84edd7d17e6171523ebbd57f1d9dd7c9b46c.json +++ b/.sqlx/query-87952bd450ed2c13b99bd502a73a84edd7d17e6171523ebbd57f1d9dd7c9b46c.json @@ -12,7 +12,7 @@ "parameters": { "Left": [ "Varchar", - "Varchar", + "Text", { "Custom": { "name": "owner_kind", diff --git a/.sqlx/query-d87220d3f4503e99fa17815db0058ab7883bf28f216d5b5fd720c56fd8889eed.json b/.sqlx/query-d87220d3f4503e99fa17815db0058ab7883bf28f216d5b5fd720c56fd8889eed.json index 7feaf3ddd..8c839d110 100644 --- a/.sqlx/query-d87220d3f4503e99fa17815db0058ab7883bf28f216d5b5fd720c56fd8889eed.json +++ b/.sqlx/query-d87220d3f4503e99fa17815db0058ab7883bf28f216d5b5fd720c56fd8889eed.json @@ -11,7 +11,7 @@ { "ordinal": 1, "name": "avatar", - "type_info": "Varchar" + "type_info": "Text" }, { "ordinal": 2, diff --git a/migrations/20241219091521_owner-avatar-longer.down.sql b/migrations/20241219091521_owner-avatar-longer.down.sql new file mode 100644 index 000000000..d4c6dc992 --- /dev/null +++ b/migrations/20241219091521_owner-avatar-longer.down.sql @@ -0,0 +1,2 @@ +UPDATE owners SET avatar = '' WHERE LENGTH(avatar) > 255; +ALTER TABLE owners ALTER COLUMN avatar TYPE VARCHAR(255); diff --git a/migrations/20241219091521_owner-avatar-longer.up.sql b/migrations/20241219091521_owner-avatar-longer.up.sql new file mode 100644 index 000000000..e292322aa --- /dev/null +++ b/migrations/20241219091521_owner-avatar-longer.up.sql @@ -0,0 +1 @@ +ALTER TABLE owners ALTER COLUMN avatar TYPE TEXT; diff --git a/src/db/add_package.rs b/src/db/add_package.rs index ff4c0101e..bf15881cf 100644 --- a/src/db/add_package.rs +++ b/src/db/add_package.rs @@ -957,6 +957,46 @@ mod test { }) } + #[test] + fn new_owner_long_avatar() { + async_wrapper(|env| async move { + let mut conn = env.async_db().await.async_conn().await; + let crate_id = initialize_crate(&mut conn, "krate").await?; + + let owner1 = CrateOwner { + avatar: "avatar".repeat(100), + login: "login".into(), + kind: OwnerKind::User, + }; + + update_owners_in_database(&mut conn, &[owner1.clone()], crate_id).await?; + + let owner_def = sqlx::query!( + r#"SELECT login, avatar, kind as "kind: OwnerKind" + FROM owners"# + ) + .fetch_one(&mut *conn) + .await?; + assert_eq!(owner_def.login, owner1.login); + assert_eq!(owner_def.avatar, owner1.avatar); + assert_eq!(owner_def.kind, owner1.kind); + + let owner_rel = sqlx::query!( + "SELECT o.login + FROM owners o, owner_rels r + WHERE + o.id = r.oid AND + r.cid = $1", + crate_id.0 + ) + .fetch_one(&mut *conn) + .await?; + assert_eq!(owner_rel.login, owner1.login); + + Ok(()) + }) + } + #[test] fn new_owners() { async_wrapper(|env| async move {