const crypto = require("crypto").webcrypto;

const random_numbers = (count) => {
  let out = new Uint32Array(count);
  return crypto.getRandomValues(out);
}

exports.up = async (knex) => {
  await knex.schema.alterTable('payment', (table) => {
    table.integer('receipt_id');
  });

  // stupid but whatever, this only has to run once
  const payments = [...await knex.select(["id"]).from("payment")];
  const rand_ids = [...random_numbers(payments.length)];

  for (let rec of payments) {
    rec.receipt_id = rand_ids.pop();
    await knex("payment").where({id: rec.id}).update({receipt_id: rec.receipt_id});
    console.log(rec);
  }
};

exports.down = async (knex) => {
  await knex.schema.alterTable('payment', (t) => {
    t.dropColumn("receipt_id");
  });
};
