const { Model, DataTypes } = require('sequelize');
const sequelize = require('../config/db.js');

class GroupModules extends Model {

    // static associate(models) {

    //     Group.belongsToMany(models.User, {
    //         through: "user_groups"
    //     });

    //     Group.belongsToMany(models.Module, {
    //         through: "group_modules"
    //     });
    // }

    // async insertUser(data) {
    //     try {
    //         const user = await User.create(data);
    //         // console.log(user.toJSON());
    //         return user.toJSON();
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }
    
    // async getUsers() {
    //     try {
    //         const users = await User.findAll();
    //         // console.log(users.map(u => u.toJSON()));
    //         return users.map(u => u.toJSON());
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }

    // async selectUser(data) {
    //     try {
    //         const user = await User.findAll(
    //             {
    //                 where: {
    //                     id: data.id
    //                 }
    //             }
    //         )
    //         console.log(user.map(u => u.toJSON()));
    //         return user;
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // } 

    // async updateUser(data) {
    //     try {
    //         const result = await User.update(data.data, {where: {id: data.id}});
    //         console.log(`User with ${data.id} updated`, result[0]);
    //         return result;
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }

    // async deleteUser(data) {
    //     try {
    //         const result = await User.destroy(
    //             {
    //                 where: {id: data.id}
    //             }
    //         );

    //         if (result) {
    //             console.log(`User ${data.id} deleted`);
    //             return `User ${data.id} deleted`;
    //         }
    //         else {
    //             console.log(`User ${data.id} not found`);
    //             return `User ${data.id} not found`;
    //         }
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }

    // async orderUser(ordCol, ordDir) {
    //     try {
    //         const user = await User.findAll(
    //             {
    //                 order: [[ordCol, ordDir]]
    //             }
    //         );
    //         console.log(user.map(u => u.toJSON()));
    //         return user;
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }

    // async paginateUser(offsetVal, limitVal) {
    //     try {
    //         const user = await User.findAll(
    //             {
    //                 offset: offsetVal,
    //                 limit: limitVal
    //             }
    //         );
    //         console.log(user.map(u => u.toJSON()));
    //         return user;
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }

    // async countUser() {
    //     try {
    //         const count = await User.count();
    //         console.log(count);
    //         return count;
    //     }
    //     catch (err) {
    //         console.log(err);
    //         return err;
    //     }
    // }
}

GroupModules.init(
    {
        groupId: {
            type: DataTypes.INTEGER,
            allowNull: false
        },
        moduleId: {
            type: DataTypes.INTEGER,
            allowNull: false
        },
        create: {
            type: DataTypes.BOOLEAN,
            allowNull: false
        },
        read: {
            type: DataTypes.BOOLEAN,
            allowNull: false
        },
        update: {
            type: DataTypes.BOOLEAN,
            allowNull: false
        },
        delete: {
            type: DataTypes.BOOLEAN,
            allowNull: false
        }
    },
    {
        sequelize,
        modelName: "GroupModules",
        tableName: "group_modules"
    }
)

module.exports = GroupModules;