- [ScopeNames.WITH_STATS]: (options: AvailableWithStatsOptions = { daysPrior: 30 }) => ({
- attributes: {
- include: [
- [
- literal(
- '(' +
- `SELECT string_agg(concat_ws('|', t.day, t.views), ',') ` +
- 'FROM ( ' +
- 'WITH ' +
- 'days AS ( ' +
- `SELECT generate_series(date_trunc('day', now()) - '${options.daysPrior} day'::interval, ` +
- `date_trunc('day', now()), '1 day'::interval) AS day ` +
- '), ' +
- 'views AS ( ' +
- 'SELECT * ' +
- 'FROM "videoView" ' +
- 'WHERE "videoView"."videoId" IN ( ' +
- 'SELECT "video"."id" ' +
- 'FROM "video" ' +
- 'WHERE "video"."channelId" = "VideoChannelModel"."id" ' +
+ [ScopeNames.WITH_STATS]: (options: AvailableWithStatsOptions = { daysPrior: 30 }) => {
+ const daysPrior = parseInt(options.daysPrior + '', 10)
+
+ return {
+ attributes: {
+ include: [
+ [
+ literal('(SELECT COUNT(*) FROM "video" WHERE "channelId" = "VideoChannelModel"."id")'),
+ 'videosCount'
+ ],
+ [
+ literal(
+ '(' +
+ `SELECT string_agg(concat_ws('|', t.day, t.views), ',') ` +
+ 'FROM ( ' +
+ 'WITH ' +
+ 'days AS ( ' +
+ `SELECT generate_series(date_trunc('day', now()) - '${daysPrior} day'::interval, ` +
+ `date_trunc('day', now()), '1 day'::interval) AS day ` +