fix: fetch published collab sql

This commit is contained in:
Zack Fu Zi Xiang 2024-11-10 19:54:10 +08:00
parent 46435090c9
commit b62552f382
No known key found for this signature in database
8 changed files with 24 additions and 23 deletions

View file

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT metadata\n FROM af_published_collab\n WHERE workspace_id = (SELECT workspace_id FROM af_workspace_namespace WHERE namespace = $1)\n AND publish_name = $2\n ",
"query": "\n SELECT metadata\n FROM af_published_collab\n WHERE workspace_id = (SELECT workspace_id FROM af_workspace_namespace WHERE namespace = $1)\n AND unpublished_at IS NULL\n AND publish_name = $2\n ",
"describe": {
"columns": [
{
@ -19,5 +19,5 @@
false
]
},
"hash": "30091f1518275d01227ece8988ea4d99aae2891322994ab462908c520b782411"
"hash": "51a3a723b1825da7b9abd9cb36db0cf8220abf063098a73e4a6fc3f87352b395"
}

View file

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "\n UPDATE af_published_collab\n SET\n blob = NULL,\n unpublished_at = NOW()\n WHERE workspace_id = $1\n AND view_id = ANY($2)\n ",
"query": "\n UPDATE af_published_collab\n SET\n blob = E''::bytea,\n unpublished_at = NOW()\n WHERE workspace_id = $1\n AND view_id = ANY($2)\n ",
"describe": {
"columns": [],
"parameters": {
@ -11,5 +11,5 @@
},
"nullable": []
},
"hash": "9848af5453a70e7a3add208f8499698ca10d55da67436bb6c8e34c5818fd7a3a"
"hash": "92c4d0e22b1f6f117c9f19589832f5f89cb5b903eee3c12f5e5fc0f70f3236e1"
}

View file

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT view_id\n FROM af_published_collab\n WHERE workspace_id = $1\n AND publish_name = $2\n ",
"query": "\n SELECT view_id\n FROM af_published_collab\n WHERE workspace_id = $1\n AND unpublished_at IS NULL\n AND publish_name = $2\n ",
"describe": {
"columns": [
{
@ -19,5 +19,5 @@
false
]
},
"hash": "2571550f7e2dd81103960741fecbf886f52f681c44344a814780b01fc06e4c8f"
"hash": "cbe8402053d42529dce158b446d09a00982e1d7cdc33835776bfbefb4b4c1854"
}

View file

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT blob\n FROM af_published_collab\n WHERE workspace_id = (SELECT workspace_id FROM af_workspace_namespace WHERE namespace = $1)\n AND publish_name = $2\n ",
"query": "\n SELECT blob\n FROM af_published_collab\n WHERE workspace_id = (SELECT workspace_id FROM af_workspace_namespace WHERE namespace = $1)\n AND unpublished_at IS NULL\n AND publish_name = $2\n ",
"describe": {
"columns": [
{
@ -19,5 +19,5 @@
false
]
},
"hash": "8957cc00ca63bcc4d29c394a7a16f94965ee0d6bee3a4ef482d1f905f9e66b66"
"hash": "fd2a37dd917717a9bb5e1db84f03f0e84e32d2fd081955389561c6567896ea9f"
}

View file

@ -301,6 +301,7 @@ pub async fn select_publish_collab_meta<'a, E: Executor<'a, Database = Postgres>
SELECT metadata
FROM af_published_collab
WHERE workspace_id = (SELECT workspace_id FROM af_workspace_namespace WHERE namespace = $1)
AND unpublished_at IS NULL
AND publish_name = $2
"#,
publish_namespace,
@ -313,7 +314,7 @@ pub async fn select_publish_collab_meta<'a, E: Executor<'a, Database = Postgres>
}
#[inline]
pub async fn delete_published_collabs<'a, E: Executor<'a, Database = Postgres>>(
pub async fn set_published_collabs_as_unpublished<'a, E: Executor<'a, Database = Postgres>>(
executor: E,
workspace_id: &Uuid,
view_ids: &[Uuid],
@ -322,7 +323,7 @@ pub async fn delete_published_collabs<'a, E: Executor<'a, Database = Postgres>>(
r#"
UPDATE af_published_collab
SET
blob = NULL,
blob = E''::bytea,
unpublished_at = NOW()
WHERE workspace_id = $1
AND view_id = ANY($2)
@ -454,7 +455,8 @@ pub async fn select_published_collab_blob<'a, E: Executor<'a, Database = Postgre
SELECT blob
FROM af_published_collab
WHERE workspace_id = (SELECT workspace_id FROM af_workspace_namespace WHERE namespace = $1)
AND publish_name = $2
AND unpublished_at IS NULL
AND publish_name = $2
"#,
publish_namespace,
publish_name,

View file

@ -1489,7 +1489,8 @@ pub async fn select_view_id_from_publish_name(
SELECT view_id
FROM af_published_collab
WHERE workspace_id = $1
AND publish_name = $2
AND unpublished_at IS NULL
AND publish_name = $2
"#,
workspace_uuid,
publish_name

View file

@ -27,11 +27,11 @@ use uuid::Uuid;
use database::{
file::{s3_client_impl::AwsS3BucketClientImpl, BucketClient, ResponseBlob},
publish::{
delete_published_collabs, insert_or_replace_publish_collabs, select_publish_collab_meta,
select_published_collab_blob, select_published_collab_info,
select_published_collab_workspace_view_id, select_published_data_for_view_id,
select_published_metadata_for_view_id, select_user_is_collab_publisher_for_all_views,
select_workspace_publish_namespace_exists, update_non_orginal_workspace_publish_namespace,
insert_or_replace_publish_collabs, select_publish_collab_meta, select_published_collab_blob,
select_published_collab_info, select_published_collab_workspace_view_id,
select_published_data_for_view_id, select_published_metadata_for_view_id,
select_user_is_collab_publisher_for_all_views, select_workspace_publish_namespace_exists,
set_published_collabs_as_unpublished, update_non_orginal_workspace_publish_namespace,
},
workspace::select_user_is_workspace_owner,
};
@ -408,7 +408,7 @@ impl PublishedCollabStore for PublishedCollabPostgresStore {
user_uuid: &Uuid,
) -> Result<(), AppError> {
check_workspace_owner_or_publisher(&self.pg_pool, user_uuid, workspace_id, view_ids).await?;
delete_published_collabs(&self.pg_pool, workspace_id, view_ids).await?;
set_published_collabs_as_unpublished(&self.pg_pool, workspace_id, view_ids).await?;
Ok(())
}
@ -598,7 +598,7 @@ impl PublishedCollabStore for PublishedCollabS3StoreWithPostgresFallback {
.map(|view_id| get_collab_s3_key(workspace_id, view_id))
.collect::<Vec<String>>();
self.bucket_client.delete_blobs(object_keys).await?;
delete_published_collabs(&self.pg_pool, workspace_id, view_ids).await?;
set_published_collabs_as_unpublished(&self.pg_pool, workspace_id, view_ids).await?;
Ok(())
}

View file

@ -423,16 +423,14 @@ async fn test_publish_doc() {
let err = guest_client
.get_published_collab::<MyCustomMetadata>(&my_namespace, publish_name_1)
.await
.err()
.unwrap();
.unwrap_err();
assert_eq!(err.code, ErrorCode::RecordNotFound, "{:?}", err);
let guest_client = localhost_client();
let err = guest_client
.get_published_collab_blob(&my_namespace, publish_name_1)
.await
.err()
.unwrap();
.unwrap_err();
assert_eq!(err.code, ErrorCode::RecordNotFound, "{:?}", err);
// default publish view should not be accessible