const { Model } = require('flitter-orm')
const bcrypt = require('bcrypt')

class MFARecoveryCodeModel extends Model {
    static get schema() {
        return {
            code: String,
            used: { type: Boolean, default: false },
            generated: { type: Date, default: () => new Date },
        }
    }

    static async create(value) {
        const code = await bcrypt.hash(value, 10)
        return new this({ code })
    }

    async verify(code) {
        return await bcrypt.compare(code, this.code)
    }
}

module.exports = exports = MFARecoveryCodeModel
