I have a model in sequelize that stores like dislike votes. It needs to know which post was liked/disliked and by which user. I am using sequelize-typescript
likeDislike.model.ts
/* eslint import/no-cycle: "off" */
import { DataTypes } from 'sequelize';
import {
Model,
PrimaryKey,
Column,
Table,
Default,
IsUUID,
BelongsTo,
Unique,
} from 'sequelize-typescript';
import { Account, FeedItem } from 'data/models';
@Table({
createdAt: false,
freezeTableName: true,
tableName: 'feed_item_like_dislike_votes',
updatedAt: false,
})
export default class FeedItemLikeDislikeVote extends Model {
@Column
vote: boolean;
@BelongsTo(() => Account, {
foreignKey: { name: 'accountId', allowNull: false },
as: 'account_',
})
@Column({ type: DataTypes.UUID, field: 'account_id' })
account: Account;
@BelongsTo(() => FeedItem, {
foreignKey: { name: 'feedItemId', allowNull: false },
as: 'feedItem_',
})
@Column({ type: DataTypes.UUID, field: 'feed_item_id' })
feedItem: FeedItem;
}
How do I make a composite primary key (account, feedItem) such that it is also a foreign key to account and feedItem respectively?