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!(
r#" sqlx::query!(
INSERT INTO workspaces (id, organization_id, name) r#"
VALUES ($1, $2, $3) INSERT INTO workspaces (id, organization_id, name)
ON CONFLICT (id) DO UPDATE SET SELECT * FROM UNNEST($1::bigint[], $2::bigint[], $3::text[])
organization_id = excluded.organization_id, ON CONFLICT (id) DO UPDATE SET
name = excluded.name organization_id = excluded.organization_id,
"#, name = excluded.name
workspace.id as i64, "#,
workspace.organization_id as i64, &workspaces.id().iter().map(|id| *id as i64).collect::<Vec<_>>()[..],
workspace.name, &workspaces.organization_id().iter().map(|id| *id as i64).collect::<Vec<_>>()[..],
) workspaces.name(),
.execute(&mut self.db) )
.await?; .execute(&mut self.db)
} .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,