Remove comments, rates and views from stats
It prevent us to apply date filters
This commit is contained in:
parent
b2d03a8331
commit
f18a060a83
|
@ -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`,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue