Skip to content

Commit

Permalink
feat: add model and migration for review_request_views table (#521)
Browse files Browse the repository at this point in the history
* feat: add model and migration for review_request_views table

* chore: rename migration

* fix: add missing association with ReviewRequest model

* fix: revert adding association in ReviewRequest model

* fix: missing @column for primary and foreign key

* fix: add new database table to sequelize
  • Loading branch information
dcshzj authored and alexanderleegs committed Mar 8, 2023
1 parent 416b37f commit e19c4b1
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable("review_request_views", {
review_request_id: {
allowNull: false,
primaryKey: true,
type: Sequelize.BIGINT,
references: {
model: "review_requests",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
site_id: {
type: Sequelize.BIGINT,
allowNull: false,
primaryKey: true,
references: {
model: "sites",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
user_id: {
type: Sequelize.BIGINT,
allowNull: false,
primaryKey: true,
references: {
model: "users",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
last_viewed_at: {
type: Sequelize.DATE,
allowNull: true,
defaultValue: null,
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.fn("NOW"),
},
updated_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.fn("NOW"),
},
})
},

async down(queryInterface, Sequelize) {
await queryInterface.dropTable("review_request_views")
},
}
56 changes: 56 additions & 0 deletions src/database/models/ReviewRequestView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import {
ForeignKey,
DataType,
Column,
Model,
Table,
BelongsTo,
PrimaryKey,
} from "sequelize-typescript"

import { ReviewRequest } from "@database/models/ReviewRequest"
import { Site } from "@database/models/Site"
import { User } from "@database/models/User"

@Table({ tableName: "review_request_views" })
// eslint-disable-next-line import/prefer-default-export
export class ReviewRequestView extends Model {
@ForeignKey(() => ReviewRequest)
@PrimaryKey
@Column
reviewRequestId!: number

@BelongsTo(() => ReviewRequest, {
onUpdate: "CASCADE",
onDelete: "CASCADE",
})
reviewRequest!: ReviewRequest

@ForeignKey(() => Site)
@PrimaryKey
@Column
siteId!: number

@BelongsTo(() => Site, {
onUpdate: "CASCADE",
onDelete: "CASCADE",
})
site!: Site

@ForeignKey(() => User)
@PrimaryKey
@Column
userId!: number

@BelongsTo(() => User, {
onUpdate: "CASCADE",
onDelete: "CASCADE",
})
user!: User

@Column({
allowNull: true,
type: DataType.DATE,
})
lastViewedAt!: Date
}
1 change: 1 addition & 0 deletions src/database/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ export * from "@database/models/ReviewMeta"
export * from "@database/models/ReviewRequest"
export * from "@database/models/Reviewers"
export * from "@database/models/Notification"
export * from "@database/models/ReviewRequestView"
3 changes: 3 additions & 0 deletions src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
ReviewRequest,
ReviewMeta,
Reviewer,
ReviewRequestView,
} from "@database/models"
import bootstrap from "@root/bootstrap"
import {
Expand Down Expand Up @@ -67,6 +68,8 @@ const sequelize = initSequelize([
ReviewRequest,
ReviewMeta,
Reviewer,
ReviewRequest,
ReviewRequestView,
])
const usersService = getUsersService(sequelize)

Expand Down
2 changes: 2 additions & 0 deletions src/tests/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
ReviewRequest,
ReviewMeta,
Reviewer,
ReviewRequestView,
} from "@database/models"

const sequelize = new Sequelize({
Expand All @@ -37,6 +38,7 @@ sequelize.addModels([
ReviewRequest,
ReviewMeta,
Reviewer,
ReviewRequestView,
])

// eslint-disable-next-line import/prefer-default-export
Expand Down

0 comments on commit e19c4b1

Please sign in to comment.