//! Seed follows between the example accounts (Phase 4) so follower counts render //! on profile and project pages. //! //! `db::follows::follow` is idempotent (`ON CONFLICT DO NOTHING`) and follow rows //! cascade when the follower is deleted, so this is re-runnable and cleaned up by //! the seed reset. There is no server-side review/comment surface, so engagement //! is limited to follows. use super::SeedError; use super::projects::SeededProject; use crate::db::{self, FollowTargetType}; /// Seed a small follow graph: every creator follows every other creator (User) /// and every project except their own (Project). Each account ends with four /// followers, enough for non-trivial counts on every profile and project page. pub async fn seed_social(pool: &sqlx::PgPool, projects: &[SeededProject]) -> Result<(), SeedError> { for a in projects { for b in projects { if a.user_id == b.user_id { continue; } db::follows::follow( pool, a.user_id, FollowTargetType::User, *b.user_id.as_uuid(), ) .await?; db::follows::follow( pool, a.user_id, FollowTargetType::Project, *b.project.id.as_uuid(), ) .await?; } } tracing::info!("example seed: seeded follows between example accounts"); Ok(()) }