import { User } from "@db_models"
import bcrypt from "bcrypt"

export default {
	description: "Create first root user",
	fn: async () => {
		// check if any user with includes admin role exists
		const adminUser = await User.find({
			$or: [{ roles: { $in: ["admin"] } }],
		})

		if (adminUser.length > 0) {
			console.log("Admin user already exists")
			return true
		}

		const defaultUsername = "root"
		const defaultPwd = "changemeorgethacked"

		let user = new User({
			username: defaultUsername,
			password: await bcrypt.hash(defaultPwd, 6),
			email: "example@comty.app",
			roles: ["admin"],
			created_at: new Date().getTime(),
			accept_tos: true,
			activated: true,
		})

		await user.save()

		console.log(
			`Root user created. Username: ${defaultUsername}, password: ${defaultPwd}\nPlease change the password after first login!!.`,
		)

		return true
	},
	crashOnFail: true,
}