const Auth = require('../models/auth');

module.exports = client => {
 
    client.createUser = async (userID) => {
        let merged = Object.assign({discord: userID});
        const newAuth = await new Auth(merged);
        return newAuth.save()
    };

    client.getUserData = async (userID) => {
        let data = await Auth.findOne({ discord: userID });
        if (data) return data;
        else return await client.createUser(userID)
    };

    client.setMC = async (userID, username) => {
        let data = await client.getUserData(userID);
        data.minecraft == username;
        return data.save()
    }
}