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"); }); };