chore: add flakes to gitignore
This commit is contained in:
parent
f238e60cf1
commit
f849f39133
|
|
@ -13,6 +13,7 @@ node_modules
|
||||||
data/
|
data/
|
||||||
.env
|
.env
|
||||||
.logs
|
.logs
|
||||||
shell.nix
|
flake.nix
|
||||||
|
flake.lock
|
||||||
.envrc
|
.envrc
|
||||||
.direnv/
|
.direnv/
|
||||||
|
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
{
|
|
||||||
"db_name": "PostgreSQL",
|
|
||||||
"query": "\n SELECT * FROM public.af_workspace WHERE owner_uid = (\n SELECT uid FROM public.af_user WHERE uuid = $1\n )\n ",
|
|
||||||
"describe": {
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"ordinal": 0,
|
|
||||||
"name": "workspace_id",
|
|
||||||
"type_info": "Uuid"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 1,
|
|
||||||
"name": "database_storage_id",
|
|
||||||
"type_info": "Uuid"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 2,
|
|
||||||
"name": "owner_uid",
|
|
||||||
"type_info": "Int8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 3,
|
|
||||||
"name": "created_at",
|
|
||||||
"type_info": "Timestamptz"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 4,
|
|
||||||
"name": "workspace_type",
|
|
||||||
"type_info": "Int4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 5,
|
|
||||||
"name": "deleted_at",
|
|
||||||
"type_info": "Timestamptz"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ordinal": 6,
|
|
||||||
"name": "workspace_name",
|
|
||||||
"type_info": "Text"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parameters": {
|
|
||||||
"Left": [
|
|
||||||
"Uuid"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"nullable": [
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
true
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"hash": "030b315f14742d266f545d6db37cc8cb083f9d52ebecd252311c4faf6fb5ab22"
|
|
||||||
}
|
|
||||||
|
|
@ -409,19 +409,23 @@ pub async fn select_user_workspace<'a, E: Executor<'a, Database = Postgres>>(
|
||||||
Ok(workspaces)
|
Ok(workspaces)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a list of workspaces that the user is part of.
|
||||||
|
/// User may owner or non-owner.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub async fn select_all_user_workspaces(
|
pub async fn select_all_user_workspaces(
|
||||||
pool: &PgPool,
|
pool: &PgPool,
|
||||||
owner_uuid: &Uuid,
|
user_uuid: &Uuid,
|
||||||
) -> Result<Vec<AFWorkspaceRow>, AppError> {
|
) -> Result<Vec<AFWorkspaceRow>, AppError> {
|
||||||
let workspaces = sqlx::query_as!(
|
let workspaces = sqlx::query_as!(
|
||||||
AFWorkspaceRow,
|
AFWorkspaceRow,
|
||||||
r#"
|
r#"
|
||||||
SELECT * FROM public.af_workspace WHERE owner_uid = (
|
SELECT * FROM public.af_workspace
|
||||||
SELECT uid FROM public.af_user WHERE uuid = $1
|
WHERE workspace_id IN (
|
||||||
)
|
SELECT workspace_id FROM public.af_workspace_member
|
||||||
|
WHERE af_workspace_member.uid = (SELECT uid FROM public.af_user WHERE uuid = $1)
|
||||||
|
);
|
||||||
"#,
|
"#,
|
||||||
owner_uuid
|
user_uuid
|
||||||
)
|
)
|
||||||
.fetch_all(pool)
|
.fetch_all(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
use client_api_test_util::generate_unique_registered_user_client;
|
use client_api_test_util::generate_unique_registered_user_client;
|
||||||
|
use database_entity::dto::AFRole;
|
||||||
|
use shared_entity::dto::workspace_dto::CreateWorkspaceMember;
|
||||||
use shared_entity::dto::workspace_dto::CreateWorkspaceParam;
|
use shared_entity::dto::workspace_dto::CreateWorkspaceParam;
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|
@ -29,3 +31,44 @@ async fn add_and_delete_workspace_for_user() {
|
||||||
let workspaces = c.get_workspaces().await.unwrap();
|
let workspaces = c.get_workspaces().await.unwrap();
|
||||||
assert_eq!(workspaces.0.len(), 1);
|
assert_eq!(workspaces.0.len(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn add_and_delete_workspace_for_non_owner_user() {
|
||||||
|
let (member, member_user) = generate_unique_registered_user_client().await;
|
||||||
|
|
||||||
|
// Owner added member to workspace
|
||||||
|
let (owner, _user) = generate_unique_registered_user_client().await;
|
||||||
|
let owner_workspace = owner
|
||||||
|
.create_workspace(CreateWorkspaceParam {
|
||||||
|
workspace_name: Some("owner_workspace".to_string()),
|
||||||
|
})
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
owner
|
||||||
|
.add_workspace_members(
|
||||||
|
owner_workspace.workspace_id.to_string(),
|
||||||
|
vec![CreateWorkspaceMember {
|
||||||
|
email: member_user.email.clone(),
|
||||||
|
role: AFRole::Member,
|
||||||
|
}],
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
// Member should have 2 workspaces
|
||||||
|
let member_workspaces = member.get_workspaces().await.unwrap();
|
||||||
|
assert_eq!(member_workspaces.0.len(), 2);
|
||||||
|
|
||||||
|
owner
|
||||||
|
.remove_workspace_members(
|
||||||
|
owner_workspace.workspace_id.to_string(),
|
||||||
|
vec![member_user.email],
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
// Member should have 1 workspaces, because owner removed him
|
||||||
|
let member_workspaces = member.get_workspaces().await.unwrap();
|
||||||
|
assert_eq!(member_workspaces.0.len(), 1);
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue