migration files
This commit is contained in:
157
backend/migrations/20241124000001-create-users.js
Normal file
157
backend/migrations/20241124000001-create-users.js
Normal file
@@ -0,0 +1,157 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable("Users", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
defaultValue: Sequelize.UUIDV4,
|
||||
primaryKey: true,
|
||||
},
|
||||
email: {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
},
|
||||
password: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
firstName: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
lastName: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
phone: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
authProvider: {
|
||||
type: Sequelize.ENUM("local", "google"),
|
||||
defaultValue: "local",
|
||||
},
|
||||
providerId: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
address1: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
address2: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
city: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
state: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
zipCode: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
country: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
profileImage: {
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
isVerified: {
|
||||
type: Sequelize.BOOLEAN,
|
||||
defaultValue: false,
|
||||
},
|
||||
verificationToken: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
verificationTokenExpiry: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
},
|
||||
verifiedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
},
|
||||
passwordResetToken: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
passwordResetTokenExpiry: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
},
|
||||
defaultAvailableAfter: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: "09:00",
|
||||
},
|
||||
defaultAvailableBefore: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: "17:00",
|
||||
},
|
||||
defaultSpecifyTimesPerDay: {
|
||||
type: Sequelize.BOOLEAN,
|
||||
defaultValue: false,
|
||||
},
|
||||
defaultWeeklyTimes: {
|
||||
type: Sequelize.JSONB,
|
||||
defaultValue: {
|
||||
sunday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
monday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
tuesday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
wednesday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
thursday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
friday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
saturday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
},
|
||||
},
|
||||
stripeConnectedAccountId: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
stripeCustomerId: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
},
|
||||
loginAttempts: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: 0,
|
||||
},
|
||||
lockUntil: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
},
|
||||
jwtVersion: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: 0,
|
||||
allowNull: false,
|
||||
},
|
||||
role: {
|
||||
type: Sequelize.ENUM("user", "admin"),
|
||||
defaultValue: "user",
|
||||
allowNull: false,
|
||||
},
|
||||
itemRequestNotificationRadius: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: 10,
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
|
||||
// Add indexes
|
||||
await queryInterface.addIndex("Users", ["email"], { unique: true });
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable("Users");
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user