WITH_USER_HISTORY = 'WITH_USER_HISTORY',
WITH_STREAMING_PLAYLISTS = 'WITH_STREAMING_PLAYLISTS',
WITH_USER_ID = 'WITH_USER_ID',
+ WITH_IMMUTABLE_ATTRIBUTES = 'WITH_IMMUTABLE_ATTRIBUTES',
WITH_THUMBNAILS = 'WITH_THUMBNAILS'
}
}
@Scopes(() => ({
+ [ScopeNames.WITH_IMMUTABLE_ATTRIBUTES]: {
+ attributes: [ 'id', 'url', 'uuid', 'remote' ]
+ },
[ScopeNames.FOR_API]: (options: ForAPIOptions) => {
const query: FindOptions = {
include: [
static loadImmutableAttributes (id: number | string, t?: Transaction): Bluebird<MVideoImmutable> {
const fun = () => {
- const where = buildWhereIdOrUUID(id)
- const options = {
- attributes: [
- 'id', 'url', 'uuid'
- ],
- where,
+ const query = {
+ where: buildWhereIdOrUUID(id),
transaction: t
}
- return VideoModel.unscoped().findOne(options)
+ return VideoModel.scope(ScopeNames.WITH_IMMUTABLE_ATTRIBUTES).findOne(query)
}
return ModelCache.Instance.doCache({
- cacheType: 'video-immutable',
+ cacheType: 'load-video-immutable-id',
key: '' + id,
deleteKey: 'video',
fun
return VideoModel.scope(ScopeNames.WITH_THUMBNAILS).findOne(query)
}
+ static loadByUrlImmutableAttributes (url: string, transaction?: Transaction): Bluebird<MVideoImmutable> {
+ const fun = () => {
+ const query: FindOptions = {
+ where: {
+ url
+ },
+ transaction
+ }
+
+ return VideoModel.scope(ScopeNames.WITH_IMMUTABLE_ATTRIBUTES).findOne(query)
+ }
+
+ return ModelCache.Instance.doCache({
+ cacheType: 'load-video-immutable-url',
+ key: url,
+ deleteKey: 'video',
+ fun
+ })
+ }
+
static loadByUrlAndPopulateAccount (url: string, transaction?: Transaction): Bluebird<MVideoAccountLightBlacklistAllFiles> {
const query: FindOptions = {
where: {