aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-11-20 11:19:23 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-11-27 19:40:52 +0100
commit7e9334c34db23e5ad1e118151b24c720dd985984 (patch)
tree154f5d1db44ff652b793d8e0b7dc1b00a3ddaec1 /server/models
parent892211e8493b1f992fce7616cb1e48b7ff87a1dc (diff)
downloadPeerTube-7e9334c34db23e5ad1e118151b24c720dd985984.tar.gz
PeerTube-7e9334c34db23e5ad1e118151b24c720dd985984.tar.zst
PeerTube-7e9334c34db23e5ad1e118151b24c720dd985984.zip
Add ability to unfollow a server
Diffstat (limited to 'server/models')
-rw-r--r--server/models/account/account-follow-interface.ts11
-rw-r--r--server/models/account/account-follow.ts26
2 files changed, 30 insertions, 7 deletions
diff --git a/server/models/account/account-follow-interface.ts b/server/models/account/account-follow-interface.ts
index 21fda98ce..6f228c790 100644
--- a/server/models/account/account-follow-interface.ts
+++ b/server/models/account/account-follow-interface.ts
@@ -1,18 +1,19 @@
1import * as Sequelize from 'sequelize'
2import * as Bluebird from 'bluebird' 1import * as Bluebird from 'bluebird'
3import { FollowState } from '../../../shared/models/accounts/follow.model' 2import * as Sequelize from 'sequelize'
3import { AccountFollow, FollowState } from '../../../shared/models/accounts/follow.model'
4import { ResultList } from '../../../shared/models/result-list.model' 4import { ResultList } from '../../../shared/models/result-list.model'
5import { AccountInstance } from './account-interface' 5import { AccountInstance } from './account-interface'
6 6
7export namespace AccountFollowMethods { 7export namespace AccountFollowMethods {
8 export type LoadByAccountAndTarget = (accountId: number, targetAccountId: number) => Bluebird<AccountFollowInstance> 8 export type LoadByAccountAndTarget = (accountId: number, targetAccountId: number) => Bluebird<AccountFollowInstance>
9 9
10 export type ListFollowingForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountInstance> > 10 export type ListFollowingForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountFollowInstance>>
11 export type ListFollowersForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountInstance> > 11 export type ListFollowersForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountFollowInstance>>
12 12
13 export type ListAcceptedFollowerUrlsForApi = (accountId: number[], start?: number, count?: number) => Promise< ResultList<string> > 13 export type ListAcceptedFollowerUrlsForApi = (accountId: number[], start?: number, count?: number) => Promise< ResultList<string> >
14 export type ListAcceptedFollowingUrlsForApi = (accountId: number[], start?: number, count?: number) => Promise< ResultList<string> > 14 export type ListAcceptedFollowingUrlsForApi = (accountId: number[], start?: number, count?: number) => Promise< ResultList<string> >
15 export type ListAcceptedFollowerSharedInboxUrls = (accountId: number[]) => Promise< ResultList<string> > 15 export type ListAcceptedFollowerSharedInboxUrls = (accountId: number[]) => Promise< ResultList<string> >
16 export type ToFormattedJSON = (this: AccountFollowInstance) => AccountFollow
16} 17}
17 18
18export interface AccountFollowClass { 19export interface AccountFollowClass {
@@ -38,6 +39,8 @@ export interface AccountFollowInstance extends AccountFollowClass, AccountFollow
38 39
39 AccountFollower?: AccountInstance 40 AccountFollower?: AccountInstance
40 AccountFollowing?: AccountInstance 41 AccountFollowing?: AccountInstance
42
43 toFormattedJSON: AccountFollowMethods.ToFormattedJSON
41} 44}
42 45
43export interface AccountFollowModel extends AccountFollowClass, Sequelize.Model<AccountFollowInstance, AccountFollowAttributes> {} 46export interface AccountFollowModel extends AccountFollowClass, Sequelize.Model<AccountFollowInstance, AccountFollowAttributes> {}
diff --git a/server/models/account/account-follow.ts b/server/models/account/account-follow.ts
index f00c7dcd9..34ba3f8db 100644
--- a/server/models/account/account-follow.ts
+++ b/server/models/account/account-follow.ts
@@ -12,6 +12,7 @@ let listFollowersForApi: AccountFollowMethods.ListFollowersForApi
12let listAcceptedFollowerUrlsForApi: AccountFollowMethods.ListAcceptedFollowerUrlsForApi 12let listAcceptedFollowerUrlsForApi: AccountFollowMethods.ListAcceptedFollowerUrlsForApi
13let listAcceptedFollowingUrlsForApi: AccountFollowMethods.ListAcceptedFollowingUrlsForApi 13let listAcceptedFollowingUrlsForApi: AccountFollowMethods.ListAcceptedFollowingUrlsForApi
14let listAcceptedFollowerSharedInboxUrls: AccountFollowMethods.ListAcceptedFollowerSharedInboxUrls 14let listAcceptedFollowerSharedInboxUrls: AccountFollowMethods.ListAcceptedFollowerSharedInboxUrls
15let toFormattedJSON: AccountFollowMethods.ToFormattedJSON
15 16
16export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { 17export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
17 AccountFollow = sequelize.define<AccountFollowInstance, AccountFollowAttributes>('AccountFollow', 18 AccountFollow = sequelize.define<AccountFollowInstance, AccountFollowAttributes>('AccountFollow',
@@ -46,7 +47,10 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
46 listAcceptedFollowingUrlsForApi, 47 listAcceptedFollowingUrlsForApi,
47 listAcceptedFollowerSharedInboxUrls 48 listAcceptedFollowerSharedInboxUrls
48 ] 49 ]
49 addMethodsToModel(AccountFollow, classMethods) 50 const instanceMethods = [
51 toFormattedJSON
52 ]
53 addMethodsToModel(AccountFollow, classMethods, instanceMethods)
50 54
51 return AccountFollow 55 return AccountFollow
52} 56}
@@ -73,6 +77,22 @@ function associate (models) {
73 }) 77 })
74} 78}
75 79
80toFormattedJSON = function (this: AccountFollowInstance) {
81 const follower = this.AccountFollower.toFormattedJSON()
82 const following = this.AccountFollowing.toFormattedJSON()
83
84 const json = {
85 id: this.id,
86 follower,
87 following,
88 state: this.state,
89 createdAt: this.createdAt,
90 updatedAt: this.updatedAt
91 }
92
93 return json
94}
95
76loadByAccountAndTarget = function (accountId: number, targetAccountId: number) { 96loadByAccountAndTarget = function (accountId: number, targetAccountId: number) {
77 const query = { 97 const query = {
78 where: { 98 where: {
@@ -122,7 +142,7 @@ listFollowingForApi = function (id: number, start: number, count: number, sort:
122 142
123 return AccountFollow.findAndCountAll(query).then(({ rows, count }) => { 143 return AccountFollow.findAndCountAll(query).then(({ rows, count }) => {
124 return { 144 return {
125 data: rows.map(r => r.AccountFollowing), 145 data: rows,
126 total: count 146 total: count
127 } 147 }
128 }) 148 })
@@ -154,7 +174,7 @@ listFollowersForApi = function (id: number, start: number, count: number, sort:
154 174
155 return AccountFollow.findAndCountAll(query).then(({ rows, count }) => { 175 return AccountFollow.findAndCountAll(query).then(({ rows, count }) => {
156 return { 176 return {
157 data: rows.map(r => r.AccountFollower), 177 data: rows,
158 total: count 178 total: count
159 } 179 }
160 }) 180 })