Refactor options in models
This commit is contained in:
parent
56d07460b5
commit
9c9a236b54
3 changed files with 82 additions and 110 deletions
|
@ -438,8 +438,28 @@ ON "Account->Actor"."serverId" = "Account->Actor->Server"."id"`
|
|||
}
|
||||
}
|
||||
|
||||
static listForApi (parameters: {
|
||||
actorId: number
|
||||
static listLocalsForSitemap (sort: string): Promise<MChannelActor[]> {
|
||||
const query = {
|
||||
attributes: [ ],
|
||||
offset: 0,
|
||||
order: getSort(sort),
|
||||
include: [
|
||||
{
|
||||
attributes: [ 'preferredUsername', 'serverId' ],
|
||||
model: ActorModel.unscoped(),
|
||||
where: {
|
||||
serverId: null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
return VideoChannelModel
|
||||
.unscoped()
|
||||
.findAll(query)
|
||||
}
|
||||
|
||||
static listForApi (parameters: Pick<AvailableForListOptions, 'actorId'> & {
|
||||
start: number
|
||||
count: number
|
||||
sort: string
|
||||
|
@ -462,36 +482,10 @@ ON "Account->Actor"."serverId" = "Account->Actor->Server"."id"`
|
|||
})
|
||||
}
|
||||
|
||||
static listLocalsForSitemap (sort: string): Promise<MChannelActor[]> {
|
||||
const query = {
|
||||
attributes: [ ],
|
||||
offset: 0,
|
||||
order: getSort(sort),
|
||||
include: [
|
||||
{
|
||||
attributes: [ 'preferredUsername', 'serverId' ],
|
||||
model: ActorModel.unscoped(),
|
||||
where: {
|
||||
serverId: null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
return VideoChannelModel
|
||||
.unscoped()
|
||||
.findAll(query)
|
||||
}
|
||||
|
||||
static searchForApi (options: {
|
||||
actorId: number
|
||||
search?: string
|
||||
static searchForApi (options: Pick<AvailableForListOptions, 'actorId' | 'search' | 'host' | 'handles'> & {
|
||||
start: number
|
||||
count: number
|
||||
sort: string
|
||||
|
||||
host?: string
|
||||
handles?: string[]
|
||||
}) {
|
||||
let attributesInclude: any[] = [ literal('0 as similarity') ]
|
||||
let where: WhereOptions
|
||||
|
|
|
@ -19,7 +19,7 @@ import {
|
|||
} from 'sequelize-typescript'
|
||||
import { buildUUID, uuidToShort } from '@server/helpers/uuid'
|
||||
import { MAccountId, MChannelId } from '@server/types/models'
|
||||
import { AttributesOnly, buildPlaylistEmbedPath, buildPlaylistWatchPath } from '@shared/core-utils'
|
||||
import { AttributesOnly, buildPlaylistEmbedPath, buildPlaylistWatchPath, pick } from '@shared/core-utils'
|
||||
import { ActivityIconObject } from '../../../shared/models/activitypub/objects'
|
||||
import { PlaylistObject } from '../../../shared/models/activitypub/objects/playlist-object'
|
||||
import { VideoPlaylistPrivacy } from '../../../shared/models/videos/playlist/video-playlist-privacy.model'
|
||||
|
@ -357,19 +357,10 @@ export class VideoPlaylistModel extends Model<Partial<AttributesOnly<VideoPlayli
|
|||
})
|
||||
Thumbnail: ThumbnailModel
|
||||
|
||||
static listForApi (options: {
|
||||
followerActorId: number
|
||||
static listForApi (options: AvailableForListOptions & {
|
||||
start: number
|
||||
count: number
|
||||
sort: string
|
||||
type?: VideoPlaylistType
|
||||
accountId?: number
|
||||
videoChannelId?: number
|
||||
listMyPlaylists?: boolean
|
||||
search?: string
|
||||
host?: string
|
||||
uuids?: string[]
|
||||
withVideos?: boolean // false by default
|
||||
}) {
|
||||
const query = {
|
||||
offset: options.start,
|
||||
|
@ -382,14 +373,8 @@ export class VideoPlaylistModel extends Model<Partial<AttributesOnly<VideoPlayli
|
|||
method: [
|
||||
ScopeNames.AVAILABLE_FOR_LIST,
|
||||
{
|
||||
type: options.type,
|
||||
followerActorId: options.followerActorId,
|
||||
accountId: options.accountId,
|
||||
videoChannelId: options.videoChannelId,
|
||||
listMyPlaylists: options.listMyPlaylists,
|
||||
search: options.search,
|
||||
host: options.host,
|
||||
uuids: options.uuids,
|
||||
...pick(options, [ 'type', 'followerActorId', 'accountId', 'videoChannelId', 'listMyPlaylists', 'search', 'host', 'uuids' ]),
|
||||
|
||||
withVideos: options.withVideos || false
|
||||
} as AvailableForListOptions
|
||||
]
|
||||
|
@ -406,17 +391,14 @@ export class VideoPlaylistModel extends Model<Partial<AttributesOnly<VideoPlayli
|
|||
})
|
||||
}
|
||||
|
||||
static searchForApi (options: {
|
||||
followerActorId: number
|
||||
static searchForApi (options: Pick<AvailableForListOptions, 'followerActorId' | 'search'| 'host'| 'uuids'> & {
|
||||
start: number
|
||||
count: number
|
||||
sort: string
|
||||
search?: string
|
||||
host?: string
|
||||
uuids?: string[]
|
||||
}) {
|
||||
return VideoPlaylistModel.listForApi({
|
||||
...options,
|
||||
|
||||
type: VideoPlaylistType.REGULAR,
|
||||
listMyPlaylists: false,
|
||||
withVideos: true
|
||||
|
|
|
@ -31,7 +31,7 @@ import { LiveManager } from '@server/lib/live/live-manager'
|
|||
import { getHLSDirectory, getVideoFilePath } from '@server/lib/video-paths'
|
||||
import { getServerActor } from '@server/models/application/application'
|
||||
import { ModelCache } from '@server/models/model-cache'
|
||||
import { AttributesOnly, buildVideoEmbedPath, buildVideoWatchPath } from '@shared/core-utils'
|
||||
import { AttributesOnly, buildVideoEmbedPath, buildVideoWatchPath, pick } from '@shared/core-utils'
|
||||
import { VideoFile } from '@shared/models/videos/video-file.model'
|
||||
import { ResultList, UserRight, VideoPrivacy, VideoState } from '../../../shared'
|
||||
import { VideoObject } from '../../../shared/models/activitypub/objects'
|
||||
|
@ -1083,41 +1083,44 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
|
|||
: serverActor.id
|
||||
|
||||
const queryOptions = {
|
||||
start: options.start,
|
||||
count: options.count,
|
||||
sort: options.sort,
|
||||
...pick(options, [
|
||||
'start',
|
||||
'count',
|
||||
'sort',
|
||||
'nsfw',
|
||||
'isLive',
|
||||
'categoryOneOf',
|
||||
'licenceOneOf',
|
||||
'languageOneOf',
|
||||
'tagsOneOf',
|
||||
'tagsAllOf',
|
||||
'filter',
|
||||
'withFiles',
|
||||
'accountId',
|
||||
'videoChannelId',
|
||||
'videoPlaylistId',
|
||||
'includeLocalVideos',
|
||||
'user',
|
||||
'historyOfUser',
|
||||
'search'
|
||||
]),
|
||||
|
||||
followerActorId,
|
||||
serverAccountId: serverActor.Account.id,
|
||||
nsfw: options.nsfw,
|
||||
isLive: options.isLive,
|
||||
categoryOneOf: options.categoryOneOf,
|
||||
licenceOneOf: options.licenceOneOf,
|
||||
languageOneOf: options.languageOneOf,
|
||||
tagsOneOf: options.tagsOneOf,
|
||||
tagsAllOf: options.tagsAllOf,
|
||||
filter: options.filter,
|
||||
withFiles: options.withFiles,
|
||||
accountId: options.accountId,
|
||||
videoChannelId: options.videoChannelId,
|
||||
videoPlaylistId: options.videoPlaylistId,
|
||||
includeLocalVideos: options.includeLocalVideos,
|
||||
user: options.user,
|
||||
historyOfUser: options.historyOfUser,
|
||||
trendingDays,
|
||||
trendingAlgorithm,
|
||||
search: options.search
|
||||
trendingAlgorithm
|
||||
}
|
||||
|
||||
return VideoModel.getAvailableForApi(queryOptions, options.countVideos)
|
||||
}
|
||||
|
||||
static async searchAndPopulateAccountAndServer (options: {
|
||||
start: number
|
||||
count: number
|
||||
sort: string
|
||||
includeLocalVideos: boolean
|
||||
search?: string
|
||||
host?: string
|
||||
start?: number
|
||||
count?: number
|
||||
sort?: string
|
||||
startDate?: string // ISO 8601
|
||||
endDate?: string // ISO 8601
|
||||
originallyPublishedStartDate?: string
|
||||
|
@ -1138,40 +1141,33 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
|
|||
const serverActor = await getServerActor()
|
||||
|
||||
const queryOptions = {
|
||||
...pick(options, [
|
||||
'includeLocalVideos',
|
||||
'nsfw',
|
||||
'isLive',
|
||||
'categoryOneOf',
|
||||
'licenceOneOf',
|
||||
'languageOneOf',
|
||||
'tagsOneOf',
|
||||
'tagsAllOf',
|
||||
'user',
|
||||
'filter',
|
||||
'host',
|
||||
'start',
|
||||
'count',
|
||||
'sort',
|
||||
'startDate',
|
||||
'endDate',
|
||||
'originallyPublishedStartDate',
|
||||
'originallyPublishedEndDate',
|
||||
'durationMin',
|
||||
'durationMax',
|
||||
'uuids',
|
||||
'search'
|
||||
]),
|
||||
|
||||
followerActorId: serverActor.id,
|
||||
serverAccountId: serverActor.Account.id,
|
||||
|
||||
includeLocalVideos: options.includeLocalVideos,
|
||||
nsfw: options.nsfw,
|
||||
isLive: options.isLive,
|
||||
|
||||
categoryOneOf: options.categoryOneOf,
|
||||
licenceOneOf: options.licenceOneOf,
|
||||
languageOneOf: options.languageOneOf,
|
||||
|
||||
tagsOneOf: options.tagsOneOf,
|
||||
tagsAllOf: options.tagsAllOf,
|
||||
|
||||
user: options.user,
|
||||
filter: options.filter,
|
||||
host: options.host,
|
||||
|
||||
start: options.start,
|
||||
count: options.count,
|
||||
sort: options.sort,
|
||||
|
||||
startDate: options.startDate,
|
||||
endDate: options.endDate,
|
||||
|
||||
originallyPublishedStartDate: options.originallyPublishedStartDate,
|
||||
originallyPublishedEndDate: options.originallyPublishedEndDate,
|
||||
|
||||
durationMin: options.durationMin,
|
||||
durationMax: options.durationMax,
|
||||
|
||||
uuids: options.uuids,
|
||||
|
||||
search: options.search
|
||||
serverAccountId: serverActor.Account.id
|
||||
}
|
||||
|
||||
return VideoModel.getAvailableForApi(queryOptions)
|
||||
|
|
Loading…
Reference in a new issue