import { AssetPropsSelectionBase } from './PropsSelection';
import { AssetPropWhereOpKind } from './PropsWhere';
import { AssetRights } from './Rights';

export function assignRightsFilterInSelection<
  T extends AssetPropsSelectionBase,
>(selection: T, rights: AssetRights): T {
  const res = {
    ...selection,
    where: {
      ...(selection.where ? selection.where : {}),
    },
  };

  if (!selection?.where?.rights) {
    res.where.rights = {
      op: AssetPropWhereOpKind.MORE_EQUAL,
      v: rights,
    };
    return res;
  }

  res.where.rights = {
    op: AssetPropWhereOpKind.AND,
    v: [
      {
        rights: res.where.rights,
      },
      {
        rights: {
          op: AssetPropWhereOpKind.MORE_EQUAL,
          v: rights,
        },
      },
    ],
  };
  return res;
}
