From 6b6168606bc86430f6b7821c9d5f1c80d0425ebf Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 29 Aug 2018 16:26:25 +0200 Subject: Bufferize videos views in redis --- server/models/video/video-views.ts | 41 ++++++++++++++++++++++++++++++++++++++ server/models/video/video.ts | 9 +++++++++ 2 files changed, 50 insertions(+) create mode 100644 server/models/video/video-views.ts (limited to 'server/models') diff --git a/server/models/video/video-views.ts b/server/models/video/video-views.ts new file mode 100644 index 000000000..90ce671fd --- /dev/null +++ b/server/models/video/video-views.ts @@ -0,0 +1,41 @@ +import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table } from 'sequelize-typescript' +import { VideoModel } from './video' +import * as Sequelize from 'sequelize' + +@Table({ + tableName: 'videoView', + indexes: [ + { + fields: [ 'videoId' ] + } + ] +}) +export class VideoViewModel extends Model { + @CreatedAt + createdAt: Date + + @AllowNull(false) + @Column(Sequelize.DATE) + startDate: Date + + @AllowNull(false) + @Column(Sequelize.DATE) + endDate: Date + + @AllowNull(false) + @Column + views: number + + @ForeignKey(() => VideoModel) + @Column + videoId: number + + @BelongsTo(() => VideoModel, { + foreignKey: { + allowNull: false + }, + onDelete: 'CASCADE' + }) + Video: VideoModel + +} diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 6271db1b3..3410833c8 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -1074,6 +1074,15 @@ export class VideoModel extends Model { } } + static incrementViews (id: number, views: number) { + return VideoModel.increment('views', { + by: views, + where: { + id + } + }) + } + private static buildActorWhereWithFilter (filter?: VideoFilter) { if (filter && filter === 'local') { return { -- cgit v1.2.3