]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/account/account-follow.ts
Handle follow/accept
[github/Chocobozzz/PeerTube.git] / server / models / account / account-follow.ts
index 9bf03b253150180c6c7dc0999ca4cd204e6c3bd4..e6abc893ac66ca5e3297d2046a8003e2ae326ec1 100644 (file)
@@ -1,18 +1,21 @@
+import { values } from 'lodash'
 import * as Sequelize from 'sequelize'
 
 import { addMethodsToModel } from '../utils'
-import {
-  AccountFollowInstance,
-  AccountFollowAttributes,
-
-  AccountFollowMethods
-} from './account-follow-interface'
+import { AccountFollowAttributes, AccountFollowInstance, AccountFollowMethods } from './account-follow-interface'
+import { FOLLOW_STATES } from '../../initializers/constants'
 
 let AccountFollow: Sequelize.Model<AccountFollowInstance, AccountFollowAttributes>
+let loadByAccountAndTarget: AccountFollowMethods.LoadByAccountAndTarget
 
 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
   AccountFollow = sequelize.define<AccountFollowInstance, AccountFollowAttributes>('AccountFollow',
-    { },
+    {
+      state: {
+        type: DataTypes.ENUM(values(FOLLOW_STATES)),
+        allowNull: false
+      }
+    },
     {
       indexes: [
         {
@@ -43,6 +46,7 @@ function associate (models) {
       name: 'accountId',
       allowNull: false
     },
+    as: 'followers',
     onDelete: 'CASCADE'
   })
 
@@ -51,6 +55,18 @@ function associate (models) {
       name: 'targetAccountId',
       allowNull: false
     },
+    as: 'following',
     onDelete: 'CASCADE'
   })
 }
+
+loadByAccountAndTarget = function (accountId: number, targetAccountId: number) {
+  const query = {
+    where: {
+      accountId,
+      targetAccountId
+    }
+  }
+
+  return AccountFollow.findOne(query)
+}