Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
getStandarizedPublications.ts 885 B
import { Publication } from '@/types/models';
import { StandarizedPublication } from '@/types/publications';
import { runInSequence } from '@/utils/promise/runInSequence';
import { mapBasePublicationToStandarized } from './mapBasePublicationToStandarized';

interface Args {
  modelNameIdMap: Record<number, string>;
  publications: Publication[];
}

const SEQUENCE_CHUNK_SIZE = 250;

export const getStandarizedPublications = async ({
  publications,
  modelNameIdMap,
}: Args): Promise<StandarizedPublication[]> => {
  const getStandardizedPublicationsFuncs = publications.map(
    publication => () =>
      mapBasePublicationToStandarized(publication, {
        modelNameIdMap,
      }),
  );

  const standardizedPublications = await runInSequence<StandarizedPublication>(
    getStandardizedPublicationsFuncs,
    SEQUENCE_CHUNK_SIZE,
  );

  return standardizedPublications;
};