Table,
UpdatedAt
} from 'sequelize-typescript'
+import { CONFIG } from '@server/initializers/config'
import { MAccountActor } from '@server/types/models'
-import { AttributesOnly, pick } from '@shared/core-utils'
+import { pick } from '@shared/core-utils'
+import { AttributesOnly } from '@shared/typescript-utils'
import { ActivityPubActor } from '../../../shared/models/activitypub'
import { VideoChannel, VideoChannelSummary } from '../../../shared/models/videos'
import {
isVideoChannelDescriptionValid,
- isVideoChannelNameValid,
+ isVideoChannelDisplayNameValid,
isVideoChannelSupportValid
} from '../../helpers/custom-validators/video-channels'
import { CONSTRAINTS_FIELDS, WEBSERVER } from '../../initializers/constants'
for (const handle of options.handles || []) {
const [ preferredUsername, host ] = handle.split('@')
- if (!host) {
+ if (!host || host === WEBSERVER.HOST) {
or.push({
'$Actor.preferredUsername$': preferredUsername,
'$Actor.serverId$': null
export class VideoChannelModel extends Model<Partial<AttributesOnly<VideoChannelModel>>> {
@AllowNull(false)
- @Is('VideoChannelName', value => throwIfNotValid(value, isVideoChannelNameValid, 'name'))
+ @Is('VideoChannelName', value => throwIfNotValid(value, isVideoChannelDisplayNameValid, 'name'))
@Column
name: string
})
}
- static listByAccount (options: {
+ static listByAccountForAPI (options: {
accountId: number
start: number
count: number
})
}
+ static listAllByAccount (accountId: number) {
+ const query = {
+ limit: CONFIG.VIDEO_CHANNELS.MAX_PER_USER,
+ include: [
+ {
+ attributes: [],
+ model: AccountModel,
+ where: {
+ id: accountId
+ },
+ required: true
+ }
+ ]
+ }
+
+ return VideoChannelModel.findAll(query)
+ }
+
static loadAndPopulateAccount (id: number, transaction?: Transaction): Promise<MChannelBannerAccountDefault> {
return VideoChannelModel.unscoped()
.scope([ ScopeNames.WITH_ACTOR_BANNER, ScopeNames.WITH_ACCOUNT ])
return this.Actor.isOutdated()
}
- setAsUpdated (transaction: Transaction) {
+ setAsUpdated (transaction?: Transaction) {
return setAsUpdated('videoChannel', this.id, transaction)
}
}