Project

General

Profile

Download (1.92 KB) Statistics
| Branch: | Tag: | Revision:
const repoTypeSearchQueryMap = {
rpm: '(name ~ rpms) and (name !~ source rpm) and (name !~ debug rpm)',
sourceRpm: 'name ~ source rpm',
debugRpm: 'name ~ debug rpm',
kickstarter: 'name ~ kickstart',
ostree: 'name ~ ostree',
beta: 'name ~ beta',
};

const recommendedRepositorySetLables = [
'rhel-7-server-rpms',
'rhel-6-server-rpms',
'rhel-6-server-satellite-tools-6.3-rpms',
'rhel-server-rhscl-7-rpms',
'rhel-7-server-satellite-capsule-6.3-rpms',
'rhel-7-server-satellite-capsule-6.4-rpms',
'rhel-7-server-satellite-tools-6.3-rpms',
'rhel-6-server-satellite-tools-6.3-rpms',
'rhel-7-server-ansible-2.5-rpms',
'rhel-7-server-optional-rpms',
'rhel-7-server-extras-rpms',
'rhel-5-server-els-rpms',
'rhel-7-server-eus-rpms',
];

const createLablesQuery = lables =>
lables.map(label => `label = ${label}`).join(' or ');

const isRecommendedRepositorySet = ({ label }) => recommendedRepositorySetLables.includes(label);

export const normalizeRepositorySets = (data) => {
data.results.forEach((repositorySet) => {
/* eslint no-param-reassign: ["error", { "ignorePropertyModificationsFor": ["id"] }] */
repositorySet.id = parseInt(repositorySet.id, 10);
repositorySet.recommended = isRecommendedRepositorySet(repositorySet);
});

return data;
};

const maptToSearchQuery = (filter) => {
if (filter === 'other') {
const joined = Object.keys(repoTypeSearchQueryMap)
.map(k => repoTypeSearchQueryMap[k])
.map(q => `(${q})`)
.join(' or ');
return `not (${joined})`;
}
return repoTypeSearchQueryMap[filter];
};

export const repoTypeFilterToSearchQuery = filters => filters
.map(f => `(${maptToSearchQuery(f)})`)
.join(' or ');

export const joinSearchQueries = parts => parts
.filter(v => (v && v !== ''))
.map(v => `(${v})`)
.join(' and ');

export const recommendedRepositorySetsQuery = createLablesQuery(recommendedRepositorySetLables);

export default normalizeRepositorySets;
(2-2/4)