Skip to content
Snippets Groups Projects
populate_roots.js 1.08 KiB
Newer Older
const SelectQuery = `select
  metrics.id as metric_id,
  uploads.id as upload_id,
  (metrics.meta->>'image_id')::uuid as image_id,
  (regexp_split_to_array(uploads.upload_url, '\\?'::text))[1] as url
from metrics
  join uploads on uploads.upload_url like concat('%', metrics.meta ->> 'image_id', '%')
where
  metrics.meta -> 'image_id' IS NOT NULL
  and uploads.status = 'success'
  and not exists(
      select classification_roots.metric_id 
      from classification_roots 
      where classification_roots.metric_id = metrics.id
  )
limit 20;`

const InsertQuery = `insert into
  classification_roots(metric_id, upload_id, image_id, url)
  ${ SelectQuery }
`

async function main() {
	const { sequelize } = require('database/models')

	let totalCount = 0
	let lastCount = 0

	do {
		const [_, inserted] = await sequelize.query(InsertQuery, { raw: true })
		lastCount = inserted
		totalCount += inserted
		console.log("Inserted %d entries", lastCount)
		await new Promise(r => setTimeout(r, 250))
	} while (lastCount > 0)

	console.log("Created %d New Roots", totalCount)

	process.exit(0)
}

main()