Completed ResetRequest and Token models

This commit is contained in:
Ceferino Patino 2022-03-05 15:18:12 -06:00
commit baad13cf17
3 changed files with 66 additions and 21 deletions

View file

@ -0,0 +1,21 @@
const { v4: uuidv4 } = require('uuid');
const { DataTypes, Model } = require('sequelize');
class ResetRequest extends Model {
static initModel(sequelize) {
ResetRequest.init(
{
reqID: {
type: DataTypes.STRING,
primaryKey: true,
defaultValue: uuidv4,
},
},
{ sequelize }
);
return ResetRequest;
}
}
module.exports = ResetRequest;

View file

@ -10,6 +10,10 @@ class Token extends Model {
primaryKey: true,
defaultValue: uuidv4,
},
expires: {
type: DataTypes.BOOLEAN,
defaultValue: true,
},
},
{ sequelize }
);

View file

@ -2,51 +2,71 @@ const User = require('./User');
const Group = require('./Group');
const Organization = require('./Organization');
const Token = require('./Token');
const ResetRequest = require('./ResetRequest');
async function initModels(sequelize) {
User.initModel(sequelize);
Organization.initModel(sequelize);
Group.initModel(sequelize);
Token.initModel(sequelize);
User.hasMany(Group, { foreignKey: 'ownerID', onDelete: 'CASCADE' });
Group.belongsTo(User, { foreignKey: 'ownerID' });
User.hasOne(Organization, { foreignKey: 'ownerID', onDelete: 'CASCADE' });
Organization.hasOne(Organization, { foreignKey: 'ownerID' });
Organization.hasMany(Group, { foreignKey: 'ownerID', onDelete: 'CASCADE' });
Group.belongsTo(Organization, { foreignKey: 'orgOwnerID' });
ResetRequest.initModel(sequelize);
User.hasOne(Token, { foreignKey: 'userID', onDelete: 'CASCADE' });
Token.belongsTo(User, { foreignKey: 'userID' });
User.belongsToMany(Organization, {
through: 'orgUsers',
foreignKey: 'userID',
User.hasOne(ResetRequest, { foreignKey: 'userID', onDelete: 'CASCADE' });
User.hasMany(Group, {
as: 'groupOwner',
foreignKey: 'ownerID',
onDelete: 'CASCADE',
});
Organization.belongsToMany(User, {
through: 'orgUsers',
uniqueKey: 'orgID',
});
User.belongsToMany(Group, {
as: 'memberGroups',
through: 'groupUsers',
foreignKey: 'userID',
});
User.hasOne(Organization, {
as: 'orgOwner',
foreignKey: 'ownerID',
onDelete: 'CASCADE',
});
User.belongsToMany(Organization, {
as: 'memberOrgs',
through: 'orgUsers',
foreignKey: 'userID',
});
Group.belongsTo(User, { as: 'userOwner', foreignKey: 'ownerID' });
Group.belongsTo(Organization, {
as: 'orgOwner',
foreignKey: 'ownerID',
});
Group.belongsToMany(User, {
through: 'groupUsers',
foreignKey: 'groupID',
});
Organization.belongsTo(User, { foreignKey: 'ownerID' });
Organization.hasMany(Group, {
as: 'groupOwner',
foreignKey: 'ownerID',
onDelete: 'CASCADE',
});
Organization.belongsToMany(User, {
through: 'orgUsers',
uniqueKey: 'orgID',
});
Token.belongsTo(User, { foreignKey: 'userID' });
ResetRequest.belongsTo(User, { foreignKey: 'userID' });
if (process.env.NODE_ENV == 'development') {
await sequelize.sync({ logging: false, force: true });
} else {
await sequelize.sync({ logging: false, alter: true });
}
return { User, Group, Organization, Token };
return { User, Group, Organization, Token, ResetRequest };
}
module.exports = { User, Organization, Group, Token, initModels };
module.exports = { User, Organization, Group, Token, ResetRequest, initModels };