aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/account
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-11-30 11:31:15 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-11-30 11:31:15 +0100
commit25ed141c7c7631ef21d8764c1163fbf8a6591391 (patch)
tree8f556181a3369e7e4938d612d91be0af813e5067 /server/models/account
parent5cd80545422bba855cc9a730a2e13cc9d982c34b (diff)
downloadPeerTube-25ed141c7c7631ef21d8764c1163fbf8a6591391.tar.gz
PeerTube-25ed141c7c7631ef21d8764c1163fbf8a6591391.tar.zst
PeerTube-25ed141c7c7631ef21d8764c1163fbf8a6591391.zip
Put activity pub sends inside transactions
Diffstat (limited to 'server/models/account')
-rw-r--r--server/models/account/account-follow-interface.ts16
-rw-r--r--server/models/account/account-follow.ts16
-rw-r--r--server/models/account/account-interface.ts4
-rw-r--r--server/models/account/account-video-rate.ts2
-rw-r--r--server/models/account/account.ts6
5 files changed, 28 insertions, 16 deletions
diff --git a/server/models/account/account-follow-interface.ts b/server/models/account/account-follow-interface.ts
index a0d620dd0..7975a46f3 100644
--- a/server/models/account/account-follow-interface.ts
+++ b/server/models/account/account-follow-interface.ts
@@ -14,9 +14,19 @@ export namespace AccountFollowMethods {
14 export type ListFollowingForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountFollowInstance>> 14 export type ListFollowingForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountFollowInstance>>
15 export type ListFollowersForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountFollowInstance>> 15 export type ListFollowersForApi = (id: number, start: number, count: number, sort: string) => Bluebird< ResultList<AccountFollowInstance>>
16 16
17 export type ListAcceptedFollowerUrlsForApi = (accountId: number[], start?: number, count?: number) => Promise< ResultList<string> > 17 export type ListAcceptedFollowerUrlsForApi = (
18 export type ListAcceptedFollowingUrlsForApi = (accountId: number[], start?: number, count?: number) => Promise< ResultList<string> > 18 accountId: number[],
19 export type ListAcceptedFollowerSharedInboxUrls = (accountId: number[]) => Promise< ResultList<string> > 19 t: Sequelize.Transaction,
20 start?: number,
21 count?: number
22 ) => Promise< ResultList<string> >
23 export type ListAcceptedFollowingUrlsForApi = (
24 accountId: number[],
25 t: Sequelize.Transaction,
26 start?: number,
27 count?: number
28 ) => Promise< ResultList<string> >
29 export type ListAcceptedFollowerSharedInboxUrls = (accountId: number[], t: Sequelize.Transaction) => Promise< ResultList<string> >
20 export type ToFormattedJSON = (this: AccountFollowInstance) => AccountFollow 30 export type ToFormattedJSON = (this: AccountFollowInstance) => AccountFollow
21} 31}
22 32
diff --git a/server/models/account/account-follow.ts b/server/models/account/account-follow.ts
index 8e35c7d20..724f37baa 100644
--- a/server/models/account/account-follow.ts
+++ b/server/models/account/account-follow.ts
@@ -181,16 +181,16 @@ listFollowersForApi = function (id: number, start: number, count: number, sort:
181 }) 181 })
182} 182}
183 183
184listAcceptedFollowerUrlsForApi = function (accountIds: number[], start?: number, count?: number) { 184listAcceptedFollowerUrlsForApi = function (accountIds: number[], t: Sequelize.Transaction, start?: number, count?: number) {
185 return createListAcceptedFollowForApiQuery('followers', accountIds, start, count) 185 return createListAcceptedFollowForApiQuery('followers', accountIds, t, start, count)
186} 186}
187 187
188listAcceptedFollowerSharedInboxUrls = function (accountIds: number[]) { 188listAcceptedFollowerSharedInboxUrls = function (accountIds: number[], t: Sequelize.Transaction) {
189 return createListAcceptedFollowForApiQuery('followers', accountIds, undefined, undefined, 'sharedInboxUrl') 189 return createListAcceptedFollowForApiQuery('followers', accountIds, t, undefined, undefined, 'sharedInboxUrl')
190} 190}
191 191
192listAcceptedFollowingUrlsForApi = function (accountIds: number[], start?: number, count?: number) { 192listAcceptedFollowingUrlsForApi = function (accountIds: number[], t: Sequelize.Transaction, start?: number, count?: number) {
193 return createListAcceptedFollowForApiQuery('following', accountIds, start, count) 193 return createListAcceptedFollowForApiQuery('following', accountIds, t, start, count)
194} 194}
195 195
196// ------------------------------ UTILS ------------------------------ 196// ------------------------------ UTILS ------------------------------
@@ -198,6 +198,7 @@ listAcceptedFollowingUrlsForApi = function (accountIds: number[], start?: number
198async function createListAcceptedFollowForApiQuery ( 198async function createListAcceptedFollowForApiQuery (
199 type: 'followers' | 'following', 199 type: 'followers' | 'following',
200 accountIds: number[], 200 accountIds: number[],
201 t: Sequelize.Transaction,
201 start?: number, 202 start?: number,
202 count?: number, 203 count?: number,
203 columnUrl = 'url' 204 columnUrl = 'url'
@@ -227,7 +228,8 @@ async function createListAcceptedFollowForApiQuery (
227 228
228 const options = { 229 const options = {
229 bind: { accountIds }, 230 bind: { accountIds },
230 type: Sequelize.QueryTypes.SELECT 231 type: Sequelize.QueryTypes.SELECT,
232 transaction: t
231 } 233 }
232 tasks.push(AccountFollow['sequelize'].query(query, options)) 234 tasks.push(AccountFollow['sequelize'].query(query, options))
233 } 235 }
diff --git a/server/models/account/account-interface.ts b/server/models/account/account-interface.ts
index 6fc98ba45..b369766dc 100644
--- a/server/models/account/account-interface.ts
+++ b/server/models/account/account-interface.ts
@@ -12,12 +12,12 @@ export namespace AccountMethods {
12 export type LoadByUrl = (url: string, transaction?: Sequelize.Transaction) => Bluebird<AccountInstance> 12 export type LoadByUrl = (url: string, transaction?: Sequelize.Transaction) => Bluebird<AccountInstance>
13 export type LoadLocalByName = (name: string) => Bluebird<AccountInstance> 13 export type LoadLocalByName = (name: string) => Bluebird<AccountInstance>
14 export type LoadByNameAndHost = (name: string, host: string) => Bluebird<AccountInstance> 14 export type LoadByNameAndHost = (name: string, host: string) => Bluebird<AccountInstance>
15 export type ListByFollowersUrls = (followerUrls: string[], transaction?: Sequelize.Transaction) => Bluebird<AccountInstance[]> 15 export type ListByFollowersUrls = (followerUrls: string[], transaction: Sequelize.Transaction) => Bluebird<AccountInstance[]>
16 16
17 export type ToActivityPubObject = (this: AccountInstance) => ActivityPubActor 17 export type ToActivityPubObject = (this: AccountInstance) => ActivityPubActor
18 export type ToFormattedJSON = (this: AccountInstance) => FormattedAccount 18 export type ToFormattedJSON = (this: AccountInstance) => FormattedAccount
19 export type IsOwned = (this: AccountInstance) => boolean 19 export type IsOwned = (this: AccountInstance) => boolean
20 export type GetFollowerSharedInboxUrls = (this: AccountInstance) => Bluebird<string[]> 20 export type GetFollowerSharedInboxUrls = (this: AccountInstance, t: Sequelize.Transaction) => Bluebird<string[]>
21 export type GetFollowingUrl = (this: AccountInstance) => string 21 export type GetFollowingUrl = (this: AccountInstance) => string
22 export type GetFollowersUrl = (this: AccountInstance) => string 22 export type GetFollowersUrl = (this: AccountInstance) => string
23 export type GetPublicKeyUrl = (this: AccountInstance) => string 23 export type GetPublicKeyUrl = (this: AccountInstance) => string
diff --git a/server/models/account/account-video-rate.ts b/server/models/account/account-video-rate.ts
index 7f7c97606..d92834bbb 100644
--- a/server/models/account/account-video-rate.ts
+++ b/server/models/account/account-video-rate.ts
@@ -28,7 +28,7 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
28 { 28 {
29 indexes: [ 29 indexes: [
30 { 30 {
31 fields: [ 'videoId', 'accountId', 'type' ], 31 fields: [ 'videoId', 'accountId' ],
32 unique: true 32 unique: true
33 } 33 }
34 ] 34 ]
diff --git a/server/models/account/account.ts b/server/models/account/account.ts
index c721656cb..61a88524c 100644
--- a/server/models/account/account.ts
+++ b/server/models/account/account.ts
@@ -10,7 +10,6 @@ import {
10import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' 10import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
11import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers/constants' 11import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers/constants'
12import { sendDeleteAccount } from '../../lib/activitypub/send/send-delete' 12import { sendDeleteAccount } from '../../lib/activitypub/send/send-delete'
13
14import { addMethodsToModel } from '../utils' 13import { addMethodsToModel } from '../utils'
15import { AccountAttributes, AccountInstance, AccountMethods } from './account-interface' 14import { AccountAttributes, AccountInstance, AccountMethods } from './account-interface'
16 15
@@ -315,7 +314,7 @@ isOwned = function (this: AccountInstance) {
315 return this.serverId === null 314 return this.serverId === null
316} 315}
317 316
318getFollowerSharedInboxUrls = function (this: AccountInstance) { 317getFollowerSharedInboxUrls = function (this: AccountInstance, t: Sequelize.Transaction) {
319 const query: Sequelize.FindOptions<AccountAttributes> = { 318 const query: Sequelize.FindOptions<AccountAttributes> = {
320 attributes: [ 'sharedInboxUrl' ], 319 attributes: [ 'sharedInboxUrl' ],
321 include: [ 320 include: [
@@ -327,7 +326,8 @@ getFollowerSharedInboxUrls = function (this: AccountInstance) {
327 targetAccountId: this.id 326 targetAccountId: this.id
328 } 327 }
329 } 328 }
330 ] 329 ],
330 transaction: t
331 } 331 }
332 332
333 return Account.findAll(query) 333 return Account.findAll(query)