@replyke/express
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
60 lines (59 loc) • 1.88 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const sequelize_1 = require("sequelize");
const User_1 = __importDefault(require("./User"));
class Follow extends sequelize_1.Model {
static initModel(sequelize) {
Follow.init({
id: {
type: sequelize_1.DataTypes.UUID,
defaultValue: sequelize_1.DataTypes.UUIDV4,
primaryKey: true,
allowNull: false,
},
projectId: {
type: sequelize_1.DataTypes.UUID,
allowNull: false,
},
followerId: {
type: sequelize_1.DataTypes.UUID,
allowNull: false,
},
followedId: {
type: sequelize_1.DataTypes.UUID,
allowNull: false,
},
createdAt: {
type: sequelize_1.DataTypes.DATE,
allowNull: false,
defaultValue: sequelize_1.DataTypes.NOW,
},
}, {
sequelize,
modelName: "Follow",
tableName: "Follows", // ✅ Capitalized + plural
timestamps: false, // Only createdAt, no updatedAt
});
}
/**
* Define associations to other models
*/
static associate() {
// The user who follows
Follow.belongsTo(User_1.default, {
foreignKey: "followerId",
as: "follower",
onDelete: "CASCADE",
});
// The user being followed
Follow.belongsTo(User_1.default, {
foreignKey: "followedId",
as: "followed",
onDelete: "CASCADE",
});
}
}
exports.default = Follow;