Remove comments, rates and views from stats

It prevent us to apply date filters
This commit is contained in:
Chocobozzz 2022-05-05 13:47:51 +02:00
parent b2d03a8331
commit f18a060a83
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 23 additions and 91 deletions

View File

@ -137,15 +137,11 @@ export class VideoStatsComponent implements OnInit {
this.overallStatCards = [ this.overallStatCards = [
{ {
label: $localize`Views`, label: $localize`Views`,
value: this.numberFormatter.transform(overallStats.views) value: this.numberFormatter.transform(this.video.views)
},
{
label: $localize`Comments`,
value: this.numberFormatter.transform(overallStats.comments)
}, },
{ {
label: $localize`Likes`, label: $localize`Likes`,
value: this.numberFormatter.transform(overallStats.likes) value: this.numberFormatter.transform(this.video.likes)
}, },
{ {
label: $localize`Average watch time`, label: $localize`Average watch time`,

View File

@ -134,9 +134,6 @@ export class LocalVideoViewerModel extends Model<Partial<AttributesOnly<LocalVid
FETCH FIRST 1 ROW ONLY` FETCH FIRST 1 ROW ONLY`
const watchPeakPromise = LocalVideoViewerModel.sequelize.query<any>(watchPeakQuery, options) const watchPeakPromise = LocalVideoViewerModel.sequelize.query<any>(watchPeakQuery, options)
const commentsQuery = `SELECT COUNT(*) AS comments FROM "videoComment" WHERE "videoId" = :videoId`
const commentsPromise = LocalVideoViewerModel.sequelize.query<any>(commentsQuery, options)
const countriesQuery = `SELECT country, COUNT(country) as viewers ` + const countriesQuery = `SELECT country, COUNT(country) as viewers ` +
`FROM "localVideoViewer" ` + `FROM "localVideoViewer" ` +
`WHERE "videoId" = :videoId AND country IS NOT NULL ` + `WHERE "videoId" = :videoId AND country IS NOT NULL ` +
@ -144,10 +141,9 @@ export class LocalVideoViewerModel extends Model<Partial<AttributesOnly<LocalVid
`ORDER BY viewers DESC` `ORDER BY viewers DESC`
const countriesPromise = LocalVideoViewerModel.sequelize.query<any>(countriesQuery, options) const countriesPromise = LocalVideoViewerModel.sequelize.query<any>(countriesQuery, options)
const [ rowsWatchTime, rowsWatchPeak, rowsComment, rowsCountries ] = await Promise.all([ const [ rowsWatchTime, rowsWatchPeak, rowsCountries ] = await Promise.all([
watchTimePromise, watchTimePromise,
watchPeakPromise, watchPeakPromise,
commentsPromise,
countriesPromise countriesPromise
]) ])
@ -166,14 +162,6 @@ export class LocalVideoViewerModel extends Model<Partial<AttributesOnly<LocalVid
? rowsWatchPeak[0].dateBreakpoint || null ? rowsWatchPeak[0].dateBreakpoint || null
: null, : null,
views: video.views,
likes: video.likes,
dislikes: video.dislikes,
comments: rowsComment.length !== 0
? parseInt(rowsComment[0].comments) || 0
: 0,
countries: rowsCountries.map(r => ({ countries: rowsCountries.map(r => ({
isoCode: r.country, isoCode: r.country,
viewers: r.viewers viewers: r.viewers

View File

@ -17,57 +17,6 @@ describe('Test views overall stats', function () {
servers = await prepareViewsServers() servers = await prepareViewsServers()
}) })
describe('Test rates and comments of local videos on VOD', function () {
let vodVideoId: string
before(async function () {
this.timeout(120000);
({ vodVideoId } = await prepareViewsVideos({ servers, live: false, vod: true }))
})
it('Should have the appropriate likes', async function () {
this.timeout(60000)
await servers[0].videos.rate({ id: vodVideoId, rating: 'like' })
await servers[1].videos.rate({ id: vodVideoId, rating: 'like' })
await waitJobs(servers)
const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId })
expect(stats.likes).to.equal(2)
expect(stats.dislikes).to.equal(0)
})
it('Should have the appropriate dislikes', async function () {
this.timeout(60000)
await servers[0].videos.rate({ id: vodVideoId, rating: 'dislike' })
await servers[1].videos.rate({ id: vodVideoId, rating: 'dislike' })
await waitJobs(servers)
const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId })
expect(stats.likes).to.equal(0)
expect(stats.dislikes).to.equal(2)
})
it('Should have the appropriate comments', async function () {
this.timeout(60000)
await servers[0].comments.createThread({ videoId: vodVideoId, text: 'root' })
await servers[0].comments.addReplyToLastThread({ text: 'reply' })
await servers[1].comments.createThread({ videoId: vodVideoId, text: 'root' })
await waitJobs(servers)
const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId })
expect(stats.comments).to.equal(3)
})
})
describe('Test watch time stats of local videos on live and VOD', function () { describe('Test watch time stats of local videos on live and VOD', function () {
let vodVideoId: string let vodVideoId: string
let liveVideoId: string let liveVideoId: string
@ -82,8 +31,9 @@ describe('Test views overall stats', function () {
it('Should display overall stats of a video with no viewers', async function () { it('Should display overall stats of a video with no viewers', async function () {
for (const videoId of [ liveVideoId, vodVideoId ]) { for (const videoId of [ liveVideoId, vodVideoId ]) {
const stats = await servers[0].videoStats.getOverallStats({ videoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId })
const video = await servers[0].videos.get({ id: videoId })
expect(stats.views).to.equal(0) expect(video.views).to.equal(0)
expect(stats.averageWatchTime).to.equal(0) expect(stats.averageWatchTime).to.equal(0)
expect(stats.totalWatchTime).to.equal(0) expect(stats.totalWatchTime).to.equal(0)
} }
@ -100,8 +50,9 @@ describe('Test views overall stats', function () {
for (const videoId of [ liveVideoId, vodVideoId ]) { for (const videoId of [ liveVideoId, vodVideoId ]) {
const stats = await servers[0].videoStats.getOverallStats({ videoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId })
const video = await servers[0].videos.get({ id: videoId })
expect(stats.views).to.equal(0) expect(video.views).to.equal(0)
expect(stats.averageWatchTime).to.equal(1) expect(stats.averageWatchTime).to.equal(1)
expect(stats.totalWatchTime).to.equal(1) expect(stats.totalWatchTime).to.equal(1)
} }
@ -118,14 +69,18 @@ describe('Test views overall stats', function () {
{ {
const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId })
expect(stats.views).to.equal(1) const video = await servers[0].videos.get({ id: vodVideoId })
expect(video.views).to.equal(1)
expect(stats.averageWatchTime).to.equal(2) expect(stats.averageWatchTime).to.equal(2)
expect(stats.totalWatchTime).to.equal(4) expect(stats.totalWatchTime).to.equal(4)
} }
{ {
const stats = await servers[0].videoStats.getOverallStats({ videoId: liveVideoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId: liveVideoId })
expect(stats.views).to.equal(1) const video = await servers[0].videos.get({ id: liveVideoId })
expect(video.views).to.equal(1)
expect(stats.averageWatchTime).to.equal(21) expect(stats.averageWatchTime).to.equal(21)
expect(stats.totalWatchTime).to.equal(41) expect(stats.totalWatchTime).to.equal(41)
} }
@ -143,16 +98,18 @@ describe('Test views overall stats', function () {
{ {
const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId })
const video = await servers[0].videos.get({ id: vodVideoId })
expect(stats.views).to.equal(1) expect(video.views).to.equal(1)
expect(stats.averageWatchTime).to.equal(2) expect(stats.averageWatchTime).to.equal(2)
expect(stats.totalWatchTime).to.equal(6) expect(stats.totalWatchTime).to.equal(6)
} }
{ {
const stats = await servers[0].videoStats.getOverallStats({ videoId: liveVideoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId: liveVideoId })
const video = await servers[0].videos.get({ id: liveVideoId })
expect(stats.views).to.equal(1) expect(video.views).to.equal(1)
expect(stats.averageWatchTime).to.equal(14) expect(stats.averageWatchTime).to.equal(14)
expect(stats.totalWatchTime).to.equal(43) expect(stats.totalWatchTime).to.equal(43)
} }
@ -167,14 +124,18 @@ describe('Test views overall stats', function () {
{ {
const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId: vodVideoId })
expect(stats.views).to.equal(2) const video = await servers[0].videos.get({ id: vodVideoId })
expect(video.views).to.equal(2)
expect(stats.averageWatchTime).to.equal(3) expect(stats.averageWatchTime).to.equal(3)
expect(stats.totalWatchTime).to.equal(11) expect(stats.totalWatchTime).to.equal(11)
} }
{ {
const stats = await servers[0].videoStats.getOverallStats({ videoId: liveVideoId }) const stats = await servers[0].videoStats.getOverallStats({ videoId: liveVideoId })
expect(stats.views).to.equal(2) const video = await servers[0].videos.get({ id: liveVideoId })
expect(video.views).to.equal(2)
expect(stats.averageWatchTime).to.equal(22) expect(stats.averageWatchTime).to.equal(22)
expect(stats.totalWatchTime).to.equal(88) expect(stats.totalWatchTime).to.equal(88)
} }

View File

@ -5,11 +5,6 @@ export interface VideoStatsOverall {
viewersPeak: number viewersPeak: number
viewersPeakDate: string viewersPeakDate: string
views: number
likes: number
dislikes: number
comments: number
countries: { countries: {
isoCode: string isoCode: string
viewers: number viewers: number

View File

@ -6220,14 +6220,6 @@ components:
viewersPeakDate: viewersPeakDate:
type: string type: string
format: date-time format: date-time
views:
type: number
likes:
type: number
dislikes:
type: number
comments:
type: number
countries: countries:
type: array type: array
items: items: