payouts
This commit is contained in:
@@ -1,152 +1,141 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('../config/database');
|
||||
const { DataTypes } = require("sequelize");
|
||||
const sequelize = require("../config/database");
|
||||
|
||||
const Rental = sequelize.define('Rental', {
|
||||
const Rental = sequelize.define("Rental", {
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
primaryKey: true,
|
||||
},
|
||||
itemId: {
|
||||
type: DataTypes.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'Items',
|
||||
key: 'id'
|
||||
}
|
||||
model: "Items",
|
||||
key: "id",
|
||||
},
|
||||
},
|
||||
renterId: {
|
||||
type: DataTypes.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'Users',
|
||||
key: 'id'
|
||||
}
|
||||
model: "Users",
|
||||
key: "id",
|
||||
},
|
||||
},
|
||||
ownerId: {
|
||||
type: DataTypes.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'Users',
|
||||
key: 'id'
|
||||
}
|
||||
model: "Users",
|
||||
key: "id",
|
||||
},
|
||||
},
|
||||
startDate: {
|
||||
startDateTime: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
endDate: {
|
||||
endDateTime: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false
|
||||
},
|
||||
startTime: {
|
||||
type: DataTypes.STRING
|
||||
},
|
||||
endTime: {
|
||||
type: DataTypes.STRING
|
||||
allowNull: false,
|
||||
},
|
||||
totalAmount: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
baseRentalAmount: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
platformFee: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
processingFee: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
payoutAmount: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.ENUM('pending', 'confirmed', 'active', 'completed', 'cancelled'),
|
||||
defaultValue: 'pending'
|
||||
type: DataTypes.ENUM(
|
||||
"pending",
|
||||
"confirmed",
|
||||
"active",
|
||||
"completed",
|
||||
"cancelled"
|
||||
),
|
||||
defaultValue: "pending",
|
||||
},
|
||||
paymentStatus: {
|
||||
type: DataTypes.ENUM('pending', 'paid', 'refunded'),
|
||||
defaultValue: 'pending'
|
||||
type: DataTypes.ENUM("pending", "paid", "refunded"),
|
||||
defaultValue: "pending",
|
||||
},
|
||||
payoutStatus: {
|
||||
type: DataTypes.ENUM('pending', 'processing', 'completed', 'failed'),
|
||||
defaultValue: 'pending'
|
||||
type: DataTypes.ENUM("pending", "processing", "completed", "failed"),
|
||||
defaultValue: "pending",
|
||||
},
|
||||
payoutProcessedAt: {
|
||||
type: DataTypes.DATE
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
stripeTransferId: {
|
||||
type: DataTypes.STRING
|
||||
type: DataTypes.STRING,
|
||||
},
|
||||
deliveryMethod: {
|
||||
type: DataTypes.ENUM('pickup', 'delivery'),
|
||||
defaultValue: 'pickup'
|
||||
type: DataTypes.ENUM("pickup", "delivery"),
|
||||
defaultValue: "pickup",
|
||||
},
|
||||
deliveryAddress: {
|
||||
type: DataTypes.TEXT
|
||||
type: DataTypes.TEXT,
|
||||
},
|
||||
notes: {
|
||||
type: DataTypes.TEXT
|
||||
type: DataTypes.TEXT,
|
||||
},
|
||||
// Renter's review of the item (existing fields renamed for clarity)
|
||||
itemRating: {
|
||||
type: DataTypes.INTEGER,
|
||||
validate: {
|
||||
min: 1,
|
||||
max: 5
|
||||
}
|
||||
max: 5,
|
||||
},
|
||||
},
|
||||
itemReview: {
|
||||
type: DataTypes.TEXT
|
||||
type: DataTypes.TEXT,
|
||||
},
|
||||
itemReviewSubmittedAt: {
|
||||
type: DataTypes.DATE
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
itemReviewVisible: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
},
|
||||
// Owner's review of the renter
|
||||
renterRating: {
|
||||
type: DataTypes.INTEGER,
|
||||
validate: {
|
||||
min: 1,
|
||||
max: 5
|
||||
}
|
||||
max: 5,
|
||||
},
|
||||
},
|
||||
renterReview: {
|
||||
type: DataTypes.TEXT
|
||||
type: DataTypes.TEXT,
|
||||
},
|
||||
renterReviewSubmittedAt: {
|
||||
type: DataTypes.DATE
|
||||
type: DataTypes.DATE,
|
||||
},
|
||||
renterReviewVisible: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
},
|
||||
// Private messages (always visible to recipient)
|
||||
itemPrivateMessage: {
|
||||
type: DataTypes.TEXT
|
||||
type: DataTypes.TEXT,
|
||||
},
|
||||
renterPrivateMessage: {
|
||||
type: DataTypes.TEXT
|
||||
type: DataTypes.TEXT,
|
||||
},
|
||||
// Legacy fields for backwards compatibility
|
||||
rating: {
|
||||
type: DataTypes.INTEGER,
|
||||
validate: {
|
||||
min: 1,
|
||||
max: 5
|
||||
}
|
||||
},
|
||||
review: {
|
||||
type: DataTypes.TEXT
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Rental;
|
||||
module.exports = Rental;
|
||||
|
||||
Reference in New Issue
Block a user