import { Contact } from '../api/contacts/models'

// Script to backfill `phoneFlat` for existing contacts.
// Usage (after build): node dist/src/scripts/add-phone-flat-to-contacts.js

async function execute() {
	const contacts = await Contact.find({}, { contacts: 1 })

	let updatedCount = 0

	for (let i = 0; i < contacts.length; i++) {
		const doc: any = contacts[i]
		const originalContacts = doc.contacts || []
		let changed = false

		const normalizedContacts = originalContacts.map((c: any) => {
			const contact: any = { ...c }
			if (typeof contact.phone === 'string') {
				const digits = contact.phone.replace(/\D/g, '')
				if (digits && contact.phoneFlat !== digits) {
					contact.phoneFlat = digits
					changed = true
				}
			}
			return contact
		})

		if (!changed) continue

		doc.contacts = normalizedContacts
		doc
			.save()
			.then(() => {
				updatedCount++
				console.log(updatedCount, '/', contacts.length)
			})
			.catch((err: any) => {
				console.error('Failed to update contact', String(doc._id), err)
			})
	}
}

const scriptAddPhoneFlatToContacts = {
	execute,
}

export default scriptAddPhoneFlatToContacts

