risingwave_meta::controller::utils

Function construct_privilege_dependency_query

source
pub fn construct_privilege_dependency_query(ids: Vec<PrivilegeId>) -> WithQuery
Expand description

construct_privilege_dependency_query constructs a query to find all privileges that are dependent on the given one.

ยงExamples

use risingwave_meta::controller::utils::construct_privilege_dependency_query;
use sea_orm::sea_query::*;
use sea_orm::*;

let query = construct_privilege_dependency_query(vec![1, 2, 3]);

assert_eq!(
   query.to_string(MysqlQueryBuilder),
  r#"WITH RECURSIVE `granted_privilege_ids` (`id`, `user_id`) AS (SELECT `id`, `user_id` FROM `user_privilege` WHERE `user_privilege`.`id` IN (1, 2, 3) UNION ALL (SELECT `user_privilege`.`id`, `user_privilege`.`user_id` FROM `user_privilege` INNER JOIN `granted_privilege_ids` ON `granted_privilege_ids`.`id` = `dependent_id`)) SELECT `id`, `user_id` FROM `granted_privilege_ids`"#
);
assert_eq!(
  query.to_string(PostgresQueryBuilder),
 r#"WITH RECURSIVE "granted_privilege_ids" ("id", "user_id") AS (SELECT "id", "user_id" FROM "user_privilege" WHERE "user_privilege"."id" IN (1, 2, 3) UNION ALL (SELECT "user_privilege"."id", "user_privilege"."user_id" FROM "user_privilege" INNER JOIN "granted_privilege_ids" ON "granted_privilege_ids"."id" = "dependent_id")) SELECT "id", "user_id" FROM "granted_privilege_ids""#
);
assert_eq!(
 query.to_string(SqliteQueryBuilder),
 r#"WITH RECURSIVE "granted_privilege_ids" ("id", "user_id") AS (SELECT "id", "user_id" FROM "user_privilege" WHERE "user_privilege"."id" IN (1, 2, 3) UNION ALL SELECT "user_privilege"."id", "user_privilege"."user_id" FROM "user_privilege" INNER JOIN "granted_privilege_ids" ON "granted_privilege_ids"."id" = "dependent_id") SELECT "id", "user_id" FROM "granted_privilege_ids""#
);