MCPcopy Create free account
hub / github.com/bytebase/bytebase / convertFromExpr

Function convertFromExpr

frontend/src/utils/issue/cel.ts:384–535  ·  view source on GitHub ↗
(expr: Expr)

Source from the content-addressed store, hash-verified

382};
383
384export const convertFromExpr = (expr: Expr): ConditionExpression => {
385 const simpleExpr = resolveCELExpr(expr);
386 const conditionExpression: ConditionExpression = {
387 databaseResources: [],
388 };
389
390 function processCondition(expr: SimpleExpr) {
391 // Do not process raw string expression.
392 if (isRawStringExpr(expr)) {
393 return;
394 }
395
396 if (expr.operator === "_&&_" || expr.operator === "_||_") {
397 for (const arg of expr.args) {
398 processCondition(arg);
399 }
400 } else if (expr.operator === "@in") {
401 const [property, values] = expr.args;
402 if (typeof property === "string" && Array.isArray(values)) {
403 switch (property) {
404 case CEL_ATTRIBUTE_RESOURCE_ENVIRONMENT_ID: {
405 if (conditionExpression.environments === undefined) {
406 conditionExpression.environments = [];
407 }
408 for (const value of values) {
409 conditionExpression.environments?.push(
410 `${environmentNamePrefix}${value as string}`
411 );
412 }
413 break;
414 }
415 case CEL_ATTRIBUTE_RESOURCE_DATABASE: {
416 for (const value of values) {
417 const databaseResource: DatabaseResource = {
418 databaseFullName: value as string,
419 };
420 conditionExpression.databaseResources!.push(databaseResource);
421 }
422 break;
423 }
424 case CEL_ATTRIBUTE_RESOURCE_SCHEMA_NAME: {
425 const databaseResource =
426 conditionExpression.databaseResources?.pop();
427 if (databaseResource) {
428 for (const value of values) {
429 const temp: DatabaseResource = cloneDeep(databaseResource);
430 temp.schema = value as string;
431 conditionExpression.databaseResources!.push(temp);
432 }
433 }
434 break;
435 }
436 case CEL_ATTRIBUTE_RESOURCE_TABLE_NAME: {
437 const databaseResource =
438 conditionExpression.databaseResources?.pop();
439 if (databaseResource) {
440 for (const value of values) {
441 const temp: DatabaseResource = cloneDeep(databaseResource);

Callers 7

GrantAccessDialogFunction · 0.90
EditMemberRoleDrawerFunction · 0.90
isBindingPolicyExpiredFunction · 0.90
checkQuerierPermissionFunction · 0.90
convertFromCELStringFunction · 0.85

Calls 2

resolveCELExprFunction · 0.90
processConditionFunction · 0.85

Tested by

no test coverage detected