aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models
diff options
context:
space:
mode:
Diffstat (limited to 'server/models')
-rw-r--r--server/models/account/account.ts23
-rw-r--r--server/models/activitypub/actor.ts2
-rw-r--r--server/models/video/video-share.ts40
3 files changed, 63 insertions, 2 deletions
diff --git a/server/models/account/account.ts b/server/models/account/account.ts
index d3503aaa3..493068127 100644
--- a/server/models/account/account.ts
+++ b/server/models/account/account.ts
@@ -18,8 +18,9 @@ import { isUserUsernameValid } from '../../helpers/custom-validators/users'
18import { sendDeleteActor } from '../../lib/activitypub/send' 18import { sendDeleteActor } from '../../lib/activitypub/send'
19import { ActorModel } from '../activitypub/actor' 19import { ActorModel } from '../activitypub/actor'
20import { ApplicationModel } from '../application/application' 20import { ApplicationModel } from '../application/application'
21import { AvatarModel } from '../avatar/avatar'
21import { ServerModel } from '../server/server' 22import { ServerModel } from '../server/server'
22import { throwIfNotValid } from '../utils' 23import { getSort, throwIfNotValid } from '../utils'
23import { VideoChannelModel } from '../video/video-channel' 24import { VideoChannelModel } from '../video/video-channel'
24import { UserModel } from './user' 25import { UserModel } from './user'
25 26
@@ -32,6 +33,10 @@ import { UserModel } from './user'
32 { 33 {
33 model: () => ServerModel, 34 model: () => ServerModel,
34 required: false 35 required: false
36 },
37 {
38 model: () => AvatarModel,
39 required: false
35 } 40 }
36 ] 41 ]
37 } 42 }
@@ -166,6 +171,22 @@ export class AccountModel extends Model<AccountModel> {
166 return AccountModel.findOne(query) 171 return AccountModel.findOne(query)
167 } 172 }
168 173
174 static listForApi (start: number, count: number, sort: string) {
175 const query = {
176 offset: start,
177 limit: count,
178 order: [ getSort(sort) ]
179 }
180
181 return AccountModel.findAndCountAll(query)
182 .then(({ rows, count }) => {
183 return {
184 data: rows,
185 total: count
186 }
187 })
188 }
189
169 toFormattedJSON (): Account { 190 toFormattedJSON (): Account {
170 const actor = this.Actor.toFormattedJSON() 191 const actor = this.Actor.toFormattedJSON()
171 const account = { 192 const account = {
diff --git a/server/models/activitypub/actor.ts b/server/models/activitypub/actor.ts
index ff5ab2e32..2ef7c77a2 100644
--- a/server/models/activitypub/actor.ts
+++ b/server/models/activitypub/actor.ts
@@ -372,6 +372,6 @@ export class ActorModel extends Model<ActorModel> {
372 getAvatarUrl () { 372 getAvatarUrl () {
373 if (!this.avatarId) return undefined 373 if (!this.avatarId) return undefined
374 374
375 return CONFIG.WEBSERVER.URL + this.Avatar.getWebserverPath 375 return CONFIG.WEBSERVER.URL + this.Avatar.getWebserverPath()
376 } 376 }
377} 377}
diff --git a/server/models/video/video-share.ts b/server/models/video/video-share.ts
index c252fd646..56576f98c 100644
--- a/server/models/video/video-share.ts
+++ b/server/models/video/video-share.ts
@@ -1,7 +1,9 @@
1import * as Sequelize from 'sequelize' 1import * as Sequelize from 'sequelize'
2import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript' 2import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
3import { AccountModel } from '../account/account'
3import { ActorModel } from '../activitypub/actor' 4import { ActorModel } from '../activitypub/actor'
4import { VideoModel } from './video' 5import { VideoModel } from './video'
6import { VideoChannelModel } from './video-channel'
5 7
6enum ScopeNames { 8enum ScopeNames {
7 FULL = 'FULL', 9 FULL = 'FULL',
@@ -99,4 +101,42 @@ export class VideoShareModel extends Model<VideoShareModel> {
99 return VideoShareModel.scope(ScopeNames.FULL).findAll(query) 101 return VideoShareModel.scope(ScopeNames.FULL).findAll(query)
100 .then(res => res.map(r => r.Actor)) 102 .then(res => res.map(r => r.Actor))
101 } 103 }
104
105 static loadActorsByVideoOwner (actorOwnerId: number, t: Sequelize.Transaction) {
106 const query = {
107 attributes: [],
108 include: [
109 {
110 model: ActorModel,
111 required: true
112 },
113 {
114 attributes: [],
115 model: VideoModel,
116 required: true,
117 include: [
118 {
119 attributes: [],
120 model: VideoChannelModel.unscoped(),
121 required: true,
122 include: [
123 {
124 attributes: [],
125 model: AccountModel.unscoped(),
126 required: true,
127 where: {
128 actorId: actorOwnerId
129 }
130 }
131 ]
132 }
133 ]
134 }
135 ],
136 transaction: t
137 }
138
139 return VideoShareModel.scope(ScopeNames.FULL).findAll(query)
140 .then(res => res.map(r => r.Actor))
141 }
102} 142}