import { Order } from "sequelize";
import { Model } from "sequelize-typescript";

export function parseFields(fields: string | undefined) {
    return String(fields || '').split(',').map(e => e.trim()).filter(e => !!e);
}
export function validAttributes(fields: string[], attributes: Object) {
    const keys: string[] = Object.keys(attributes);
    const result = fields.filter(item => keys.includes(item));
    if(result.length) return result;
    else return keys;
}
export function validSort(fields: string[], attributes: Object): Order | undefined {
    const keys: string[] = Object.keys(attributes);
    const validFields = fields.filter(item => keys.includes(item.startsWith('-') ? item.replace('-', '') : item));
    const result:Order = validFields.map((item) => {
        const order = item.startsWith('-') ? 'DESC' : "ASC";
        return [order === 'DESC' ? item.replace('-', '') : item, order];
    });
    return result.length ? result : undefined
}