import { ConnectionOptions, createConnection } from 'typeorm';
import yargs from 'yargs';
import { configService } from '../src/config/config.service';
import { Site } from '../src/sites/sites.entity';
import { addWindWaveData } from '../src/utils/hindcast-wind-wave';
import { ForecastData } from '../src/wind-wave-data/wind-wave-data.entity';

// Initialize command definition
const { argv } = yargs
  .scriptName('backfill-sofar-time-series')
  .usage('$0 <cmd> [args]')
  .option('s', {
    alias: 'sites',
    describe: 'The sites that should get hindcast wind-wave data',
    type: 'array',
    default: [],
  })
  // Extend definition to use the full-width of the terminal
  .wrap(yargs.terminalWidth());

const run = async () => {
  // Extract command line arguments
  const { s: siteIds } = argv;

  // Cast siteIds into a number array.
  const parsedSiteIds = siteIds.map(Number);

  const config = configService.getTypeOrmConfig() as ConnectionOptions;
  const connection = await createConnection(config);

  return addWindWaveData(parsedSiteIds, {
    siteRepository: connection.getRepository(Site),
    hindcastRepository: connection.getRepository(ForecastData),
  });
};

run();