import query from '../server-utils/query.js';
import { hashJson } from './hash-json.js';

const sampleResult = await query(
  'SELECT id, s3_key, length_in_ms FROM samples WHERE s3_key IS NOT NULL UNION SELECT id, compressed_s3_key s3_key, length_in_ms FROM samples WHERE compressed_s3_key IS NOT NULL',
  []
);

const samples = sampleResult.rows.map((row) => ({
  id: row.id,
  s3Key: row.s3_key,
  lengthInMs: row.length_in_ms,
}));

const modelResult = await query('SELECT s3_key FROM voice_conversion_model_training_runs WHERE s3_key IS NOT NULL', []);

const modelS3Keys = modelResult.rows.map((row) => row.s3_key);

for (let sample of samples) {
  for (let modelS3Key of modelS3Keys) {
    const requestData = {
      sampleS3Key: sample.s3Key,
      sampleDuration: sample.lengthInMs / 1000.0 || null,
      modelS3Key,
    } as any;
    const cacheKey = hashJson(requestData);
    console.log(`${sample.id},${cacheKey}`);
    for (let i = -24; i <= 24; i++) {
      const requestData = {
        sampleS3Key: sample.s3Key,
        sampleDuration: sample.lengthInMs / 1000.0 || null,
        modelS3Key,
        f0Delta: i,
      } as any;
      const cacheKey = hashJson(requestData);
      console.log(`${sample.id},${cacheKey}`);
    }
  }
}
