X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=server%2Fmodels%2Faccount%2Fuser-video-history.ts;h=76b469fbfa77a1c079e5df40e6e6b51c3dd82643;hb=26d6bf6533023326fa017812cf31bbe20c752d36;hp=0476cad9deef992bc6347e7d6cbb387d598a6b4f;hpb=6d8c8ea73a774c3568e6d28a4cbebcf7979d5c2a;p=oweals%2Fpeertube.git diff --git a/server/models/account/user-video-history.ts b/server/models/account/user-video-history.ts index 0476cad9d..76b469fbf 100644 --- a/server/models/account/user-video-history.ts +++ b/server/models/account/user-video-history.ts @@ -1,6 +1,8 @@ -import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, IsInt, Min, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, IsInt, Model, Table, UpdatedAt } from 'sequelize-typescript' import { VideoModel } from '../video/video' import { UserModel } from './user' +import { DestroyOptions, Op, Transaction } from 'sequelize' +import { MUserAccountId, MUserId } from '@server/types/models' @Table({ tableName: 'userVideoHistory', @@ -52,4 +54,46 @@ export class UserVideoHistoryModel extends Model { onDelete: 'CASCADE' }) User: UserModel + + static listForApi (user: MUserAccountId, start: number, count: number) { + return VideoModel.listForApi({ + start, + count, + sort: '-"userVideoHistory"."updatedAt"', + nsfw: null, // All + includeLocalVideos: true, + withFiles: false, + user, + historyOfUser: user + }) + } + + static removeUserHistoryBefore (user: MUserId, beforeDate: string, t: Transaction) { + const query: DestroyOptions = { + where: { + userId: user.id + }, + transaction: t + } + + if (beforeDate) { + query.where['updatedAt'] = { + [Op.lt]: beforeDate + } + } + + return UserVideoHistoryModel.destroy(query) + } + + static removeOldHistory (beforeDate: string) { + const query: DestroyOptions = { + where: { + updatedAt: { + [Op.lt]: beforeDate + } + } + } + + return UserVideoHistoryModel.destroy(query) + } }