import {
	flow,
	sortBy,
	uniqBy,
} from 'lodash';

export type DocumentProperties = {
	customProperty: Array<{ field: string; value: string; }>;
};

type DocFields = Array<{ name: string, value: string }>;

const ensureName = (docFields: DocFields) => docFields.filter(o => o.name);
const sortByName = (docFields: DocFields) => sortBy(docFields, ['name']);
const uniqueByName = (docFields: DocFields) => uniqBy(docFields, o => o.name);

export const processNames = flow(ensureName, sortByName, uniqueByName);

export const toSQL = (operator: string) => {
	const operators: { [key: string]: string } = {
		'is': '=',
		'isNot': '!=',
		'greater': '>',
		'less': '<',
		'equalsGreater': '>=',
		'equalsLess': '<=',
	};

	return operators[operator];
};