]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/oauth-token.js
Add like/dislike system for videos
[github/Chocobozzz/PeerTube.git] / server / models / oauth-token.js
index c9108bf9578d7c11a1d6f71ecf9e5d8468e30604..68e7c9ff724cdb1e642960f9f256cf94d9534e04 100644 (file)
@@ -1,3 +1,5 @@
+'use strict'
+
 const logger = require('../helpers/logger')
 
 // ---------------------------------------------------------------------------
@@ -6,19 +8,39 @@ module.exports = function (sequelize, DataTypes) {
   const OAuthToken = sequelize.define('OAuthToken',
     {
       accessToken: {
-        type: DataTypes.STRING
+        type: DataTypes.STRING,
+        allowNull: false
       },
       accessTokenExpiresAt: {
-        type: DataTypes.DATE
+        type: DataTypes.DATE,
+        allowNull: false
       },
       refreshToken: {
-        type: DataTypes.STRING
+        type: DataTypes.STRING,
+        allowNull: false
       },
       refreshTokenExpiresAt: {
-        type: DataTypes.DATE
+        type: DataTypes.DATE,
+        allowNull: false
       }
     },
     {
+      indexes: [
+        {
+          fields: [ 'refreshToken' ],
+          unique: true
+        },
+        {
+          fields: [ 'accessToken' ],
+          unique: true
+        },
+        {
+          fields: [ 'userId' ]
+        },
+        {
+          fields: [ 'oAuthClientId' ]
+        }
+      ],
       classMethods: {
         associate,
 
@@ -33,11 +55,6 @@ module.exports = function (sequelize, DataTypes) {
   return OAuthToken
 }
 
-// TODO: validation
-// OAuthTokenSchema.path('accessToken').required(true)
-// OAuthTokenSchema.path('client').required(true)
-// OAuthTokenSchema.path('user').required(true)
-
 // ---------------------------------------------------------------------------
 
 function associate (models) {
@@ -48,6 +65,14 @@ function associate (models) {
     },
     onDelete: 'cascade'
   })
+
+  this.belongsTo(models.OAuthClient, {
+    foreignKey: {
+      name: 'oAuthClientId',
+      allowNull: false
+    },
+    onDelete: 'cascade'
+  })
 }
 
 function getByRefreshTokenAndPopulateClient (refreshToken) {