import { SparseField } from './SparseField' import { FindOptionsOrderValue } from './FindOptionsOrderValue' import { FindOptionsOrder } from './FindOptionsOrder' export class SortField { modelName: string | null fields: Array = [] constructor( model: string | null, dir: FindOptionsOrderValue | FindOptionsOrder | undefined, fields: Array, ) { this.modelName = model fields.forEach((x) => this.addField(x, dir)) } addField(field: string, dir: FindOptionsOrderValue | FindOptionsOrder | undefined): SortField { switch (dir) { case 'desc': case 'DESC': this.fields.push(`-${field}`) break default: this.fields.push(field) } return this } toString(): string { if (this.modelName) { return `sort[${this.modelName}]=${this.fields.join(',')}` } else { return `sort=${this.fields.join(',')}` } } }