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