Workspace SOA UNNEST

This commit is contained in:
Joshua Coles 2024-07-27 20:29:58 +01:00
parent 4efbb95204
commit 300ee37cf5
2 changed files with 17 additions and 17 deletions

View File

@ -179,22 +179,22 @@ impl Worker {
.into_iter() .into_iter()
.collect::<Result<Vec<_>, _>>()?; .collect::<Result<Vec<_>, _>>()?;
for workspace in workspaces { let workspaces = Soa::from(workspaces.as_slice());
sqlx::query!( sqlx::query!(
r#" r#"
INSERT INTO workspaces (id, organization_id, name) INSERT INTO workspaces (id, organization_id, name)
VALUES ($1, $2, $3) SELECT * FROM UNNEST($1::bigint[], $2::bigint[], $3::text[])
ON CONFLICT (id) DO UPDATE SET ON CONFLICT (id) DO UPDATE SET
organization_id = excluded.organization_id, organization_id = excluded.organization_id,
name = excluded.name name = excluded.name
"#, "#,
workspace.id as i64, &workspaces.id().iter().map(|id| *id as i64).collect::<Vec<_>>()[..],
workspace.organization_id as i64, &workspaces.organization_id().iter().map(|id| *id as i64).collect::<Vec<_>>()[..],
workspace.name, workspaces.name(),
) )
.execute(&mut self.db) .execute(&mut self.db)
.await?; .await?;
}
Ok(()) Ok(())
} }

View File

@ -580,7 +580,7 @@ pub mod types {
} }
} }
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone, Soars)]
pub struct Workspace { pub struct Workspace {
pub id: u64, pub id: u64,
pub organization_id: u64, pub organization_id: u64,