import {
  AssetSelectorQueryBuilding,
  AssetSelectorQueryFieldSelector,
} from '../AssetSelectorQuery';
import { AssetSelectorQueryFieldAssetId } from './AssetSelectorQueryFieldAssetId';

export class AssetSelectorQueryFieldParentIds extends AssetSelectorQueryFieldAssetId {
  constructor() {
    super('parentids', 'a.parent_ids');
    this.allowWhere = false;
  }

  selectProp(
    qb: AssetSelectorQueryBuilding,
    as: string,
  ): AssetSelectorQueryFieldSelector {
    const ref = this.requestProp(qb);
    return {
      ref,
      as,
      reader: (row, res) => {
        const indices = [];
        if (row[as]) {
          for (let i = 0; i < row[as].length; i++) {
            res[`${as}\\${i}`] = row[as][i];
            indices.push(i);
          }
        }
        res[as] = indices;
      },
    };
  }
}
