shares updated
This commit is contained in:
1 parent
a11194831d
commit
6241c25af0
14 files changed
+296
-174
No files matched your search
@@ -5,7 +5,7 @@ export class TrackShareDto {
|
||||
@IsUUID()
|
||||
articleId: string;
|
||||
|
||||
@IsEnum(['facebook', 'twitter', 'whatsapp', 'telegram', 'link'])
|
||||
@IsEnum(['facebook', 'twitter', 'instagram', 'tiktok', 'telegram', 'link'])
|
||||
platform: SharePlatform;
|
||||
|
||||
@IsOptional()
|
||||
@@ -36,7 +36,8 @@ export class ShareStatsResponse {
|
||||
articleTitle: string;
|
||||
facebookShares: number;
|
||||
twitterShares: number;
|
||||
whatsappShares: number;
|
||||
instagramShares: number;
|
||||
tiktokShares: number;
|
||||
telegramShares: number;
|
||||
linkShares: number;
|
||||
totalShares: number;
|
||||
|
||||
@@ -11,7 +11,8 @@ import { Article } from '../entities';
|
||||
export type SharePlatform =
|
||||
| 'facebook'
|
||||
| 'twitter'
|
||||
| 'whatsapp'
|
||||
| 'instagram'
|
||||
| 'tiktok'
|
||||
| 'telegram'
|
||||
| 'link';
|
||||
|
||||
@@ -48,7 +49,8 @@ export interface ShareStats {
|
||||
articleTitle: string;
|
||||
facebookShares: number;
|
||||
twitterShares: number;
|
||||
whatsappShares: number;
|
||||
instagramShares: number;
|
||||
tiktokShares: number;
|
||||
telegramShares: number;
|
||||
linkShares: number;
|
||||
totalShares: number;
|
||||
|
||||
@@ -53,8 +53,10 @@ export class AnalyticsService {
|
||||
return 'facebookShares';
|
||||
case 'twitter':
|
||||
return 'twitterShares';
|
||||
case 'whatsapp':
|
||||
return 'whatsappShares';
|
||||
case 'instagram':
|
||||
return 'instagramShares';
|
||||
case 'tiktok':
|
||||
return 'tiktokShares';
|
||||
case 'telegram':
|
||||
return 'telegramShares';
|
||||
default:
|
||||
@@ -72,20 +74,21 @@ export class AnalyticsService {
|
||||
'article.title as "articleTitle"',
|
||||
'article.facebookShares as "facebookShares"',
|
||||
'article.twitterShares as "twitterShares"',
|
||||
'article.whatsappShares as "whatsappShares"',
|
||||
'article.instagramShares as "instagramShares"',
|
||||
'article.tiktokShares as "tiktokShares"',
|
||||
'article.telegramShares as "telegramShares"',
|
||||
'article.views as "views"',
|
||||
'article.createdAt as "createdAt"',
|
||||
'article.updatedAt as "updatedAt"',
|
||||
])
|
||||
.addSelect(
|
||||
`(article.facebookShares + article.twitterShares + article.whatsappShares + article.telegramShares) as "totalShares"`,
|
||||
`(article.facebookShares + article.twitterShares + article.instagramShares + article.tiktokShares + article.telegramShares) as "totalShares"`,
|
||||
)
|
||||
.addSelect(
|
||||
`CASE
|
||||
WHEN article.views > 0
|
||||
THEN ROUND(
|
||||
(article.facebookShares + article.twitterShares + article.whatsappShares + article.telegramShares)::decimal / article.views * 100,
|
||||
(article.facebookShares + article.twitterShares + article.instagramShares + article.tiktokShares + article.telegramShares)::decimal / article.views * 100,
|
||||
2
|
||||
)
|
||||
ELSE 0
|
||||
@@ -117,7 +120,8 @@ export class AnalyticsService {
|
||||
articleTitle: string;
|
||||
facebookShares: string;
|
||||
twitterShares: string;
|
||||
whatsappShares: string;
|
||||
instagramShares: string;
|
||||
tiktokShares: string;
|
||||
telegramShares: string;
|
||||
views: string;
|
||||
createdAt: string;
|
||||
@@ -138,11 +142,16 @@ export class AnalyticsService {
|
||||
|
||||
const facebookShares = parseInt(rawResult.facebookShares) || 0;
|
||||
const twitterShares = parseInt(rawResult.twitterShares) || 0;
|
||||
const whatsappShares = parseInt(rawResult.whatsappShares) || 0;
|
||||
const instagramShares = parseInt(rawResult.instagramShares) || 0;
|
||||
const tiktokShares = parseInt(rawResult.tiktokShares) || 0;
|
||||
const telegramShares = parseInt(rawResult.telegramShares) || 0;
|
||||
const views = parseInt(rawResult.views) || 0;
|
||||
const baseTotalShares =
|
||||
facebookShares + twitterShares + whatsappShares + telegramShares;
|
||||
facebookShares +
|
||||
twitterShares +
|
||||
instagramShares +
|
||||
tiktokShares +
|
||||
telegramShares;
|
||||
const totalShares = baseTotalShares + linkShares;
|
||||
const shareRate =
|
||||
views > 0 ? parseFloat(((totalShares / views) * 100).toFixed(2)) : 0;
|
||||
@@ -152,7 +161,8 @@ export class AnalyticsService {
|
||||
articleTitle: rawResult.articleTitle,
|
||||
facebookShares,
|
||||
twitterShares,
|
||||
whatsappShares,
|
||||
instagramShares,
|
||||
tiktokShares,
|
||||
telegramShares,
|
||||
linkShares,
|
||||
totalShares,
|
||||
@@ -217,14 +227,16 @@ export class AnalyticsService {
|
||||
totalShares: number;
|
||||
facebookShares: number;
|
||||
twitterShares: number;
|
||||
whatsappShares: number;
|
||||
instagramShares: number;
|
||||
tiktokShares: number;
|
||||
telegramShares: number;
|
||||
linkShares: number;
|
||||
}> {
|
||||
interface ArticleStatsRaw {
|
||||
facebookShares: string;
|
||||
twitterShares: string;
|
||||
whatsappShares: string;
|
||||
instagramShares: string;
|
||||
tiktokShares: string;
|
||||
telegramShares: string;
|
||||
}
|
||||
|
||||
@@ -233,7 +245,8 @@ export class AnalyticsService {
|
||||
.select([
|
||||
'SUM(article.facebookShares) as facebookShares',
|
||||
'SUM(article.twitterShares) as twitterShares',
|
||||
'SUM(article.whatsappShares) as whatsappShares',
|
||||
'SUM(article.instagramShares) as instagramShares',
|
||||
'SUM(article.tiktokShares) as tiktokShares',
|
||||
'SUM(article.telegramShares) as telegramShares',
|
||||
])
|
||||
.getRawOne()) as ArticleStatsRaw;
|
||||
@@ -244,13 +257,15 @@ export class AnalyticsService {
|
||||
|
||||
const facebookShares = parseInt(articleStats?.facebookShares || '0') || 0;
|
||||
const twitterShares = parseInt(articleStats?.twitterShares || '0') || 0;
|
||||
const whatsappShares = parseInt(articleStats?.whatsappShares || '0') || 0;
|
||||
const instagramShares = parseInt(articleStats?.instagramShares || '0') || 0;
|
||||
const tiktokShares = parseInt(articleStats?.tiktokShares || '0') || 0;
|
||||
const telegramShares = parseInt(articleStats?.telegramShares || '0') || 0;
|
||||
|
||||
const totalShares =
|
||||
facebookShares +
|
||||
twitterShares +
|
||||
whatsappShares +
|
||||
instagramShares +
|
||||
tiktokShares +
|
||||
telegramShares +
|
||||
linkShares;
|
||||
|
||||
@@ -258,7 +273,8 @@ export class AnalyticsService {
|
||||
totalShares,
|
||||
facebookShares,
|
||||
twitterShares,
|
||||
whatsappShares,
|
||||
instagramShares,
|
||||
tiktokShares,
|
||||
telegramShares,
|
||||
linkShares,
|
||||
};
|
||||
|
||||
@@ -249,7 +249,10 @@ export class Article {
|
||||
twitterShares: number;
|
||||
|
||||
@Column({ default: 0 })
|
||||
whatsappShares: number;
|
||||
instagramShares: number;
|
||||
|
||||
@Column({ default: 0 })
|
||||
tiktokShares: number;
|
||||
|
||||
@Column({ default: 0 })
|
||||
telegramShares: number;
|
||||
|
||||
Reference in new issue
Block a user