* Added direct join functionality * Completed CreateUser test suite * Removed non-essential imports * Reordered test functions * Login test suite completed * Completed Logout test suite * Completed RequestReset test suite * Completed ResetPassword test suite * Completed UpdateUserDetails test suite * Completed SetAudio test suite * Fixed UpdateUserDetials suite * GetUserDetails test suite complete * Completed ResetPassword test suite * Completed GetMemberOrgs test suite * Completed GetOwnedOrgs test suite * AddOrgMember test suite added * Created CreateOrg test suite * Modified AddOrgMember suite * Delete Org test suite completed * Completed GetOrg test suite * Completed RemoveOrgMember test suite * Completed UpdateOrgDetails test suite * Changed oackage,json files * Switched project over to workspaces * Test build script completed * Fixed config.json missing on workflow run * Completed test-build.js.yml * Completed test-build.js.yml * Completed test-build.js.yml * Test build completed * Completed test-build.js.yml * Added touch server * Touched test-build.js.yml * Reworked workflows and automated test suite (#7) Reworked workflows and automated test suite (#7) * Configured new js file and isolated database files in db folder (#10) * Changed config.js and isolated db * Configured new js file and isolated database files in db folder * Removed .env files from config (#11)
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
const { Model } = require('sequelize');
|
|
|
|
module.exports = (sequelize, DataTypes) => {
|
|
class User extends Model {
|
|
static associate(models) {
|
|
User.hasOne(models.Token, {
|
|
foreignKey: 'userID',
|
|
onDelete: 'CASCADE',
|
|
});
|
|
User.hasOne(models.ResetRequest, {
|
|
foreignKey: 'userID',
|
|
onDelete: 'CASCADE',
|
|
});
|
|
User.hasMany(models.Organization, {
|
|
as: 'ownedOrg',
|
|
foreignKey: 'ownerID',
|
|
onDelete: 'CASCADE',
|
|
});
|
|
User.belongsToMany(models.Organization, {
|
|
as: 'memberOrgs',
|
|
through: 'OrgMembers',
|
|
foreignKey: 'userID',
|
|
onDelete: 'CASCADE',
|
|
});
|
|
}
|
|
}
|
|
|
|
User.init(
|
|
{
|
|
userID: {
|
|
type: DataTypes.UUID,
|
|
primaryKey: true,
|
|
defaultValue: DataTypes.UUIDV4,
|
|
},
|
|
firstName: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
lastName: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
email: {
|
|
type: DataTypes.STRING,
|
|
unique: true,
|
|
allowNull: false,
|
|
},
|
|
password: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
pronouns: {
|
|
type: DataTypes.STRING,
|
|
},
|
|
},
|
|
{ sequelize }
|
|
);
|
|
|
|
return User;
|
|
};
|