Skip to content

Commit

Permalink
add total and weekly reports + getNewUser (work in progress)
Browse files Browse the repository at this point in the history
  • Loading branch information
fegloff committed Jan 11, 2024
1 parent 746c087 commit b6d611a
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 10 deletions.
30 changes: 26 additions & 4 deletions src/database/stats.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,28 @@ export class StatsService {
return rows.length ? +rows[0].count : 0
}

public async getNewUsers (daysPeriod = 0): Promise<number> {
const currentTime = moment()
const dateStart = moment()
.tz('America/Los_Angeles')
.set({ hour: 0, minute: 0, second: 0 })
.subtract(daysPeriod, 'days')
.unix()

const dateEnd = currentTime.unix()
const query = logRepository
.createQueryBuilder('logs')
.select('tgUserId')
.where(
'logs.createdAt = (SELECT MIN(createdAt) FROM logs WHERE tgUserId = logs.tgUserId)'
)
.andWhere(`logs.createdAt BETWEEN TO_TIMESTAMP(${dateStart}) and TO_TIMESTAMP(${dateEnd})`)

const result = await query.getMany()
console.log(`DAYS ${daysPeriod}`, result)
return 8
}

public async getTotalMessages (daysPeriod = 0, onlySupportedCommands = false): Promise<number> {
const currentTime = moment()
const dateStart = moment()
Expand All @@ -83,8 +105,9 @@ export class StatsService {
const query = logRepository
.createQueryBuilder('logs')
.select('count(*)')
.where(`logs.createdAt BETWEEN TO_TIMESTAMP(${dateStart}) and TO_TIMESTAMP(${dateEnd})`)

if (daysPeriod > 0) {
query.where(`logs.createdAt BETWEEN TO_TIMESTAMP(${dateStart}) and TO_TIMESTAMP(${dateEnd})`)
}
if (onlySupportedCommands) {
query.andWhere('logs.isSupportedCommand=true')
}
Expand Down Expand Up @@ -113,7 +136,7 @@ export class StatsService {
return rows
}

public async getRevenue (daysPeriod = 7): Promise<string> {
public async getRevenueFromLog (daysPeriod = 7): Promise<string> {
const currentTime = moment()
const dateStart = moment()
.tz('America/Los_Angeles')
Expand All @@ -123,7 +146,6 @@ export class StatsService {

const dateEnd = currentTime.unix()
const result = await logRepository.createQueryBuilder('logs')
// const result = await invoiceRepository.createQueryBuilder('invoice')
.select('SUM(CAST(logs.amountCredits AS NUMERIC)) AS revenue')
.where('logs.isSupportedCommand=true')
.andWhere(`logs.createdAt BETWEEN TO_TIMESTAMP(${dateStart}) and TO_TIMESTAMP(${dateEnd})`)
Expand Down
29 changes: 23 additions & 6 deletions src/modules/schedule/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,12 @@ export class BotSchedule {
swapTradingVolume,

balance,
uniqueUsersCount,
totalMessage,

weeklyUsers,
dailyMessages
dailyMessages,
weeklyRevenue
] = await Promise.all([
getDailyMetrics(MetricsDailyType.totalFee, 7),
getDailyMetrics(MetricsDailyType.walletsCount, 7),
Expand All @@ -104,9 +108,16 @@ export class BotSchedule {
getTradingVolume(7),

getAddressBalance(this.holderAddress),
statsService.getUniqueUsersCount(),
statsService.getTotalMessages(0, true),

statsService.getActiveUsers(7),
statsService.getTotalMessages(1, true)
statsService.getTotalMessages(7, true),
getBotFee(this.holderAddress, 7) // statsService.getRevenue(100)
])
// await statsService.getNewUsers(100)
// await statsService.getNewUsers(400)
// await statsService.getNewUsers(600)

const networkFeesSum = networkFeesWeekly.reduce((sum, item) => sum + +item.value, 0)
const walletsCountSum = walletsCountWeekly.reduce((sum, item) => sum + +item.value, 0)
Expand All @@ -123,13 +134,19 @@ export class BotSchedule {
'Total assets, monthly stakes, weekly swaps: ' +
`*$${abbreviateNumber(bridgeTVL)}*, ${abbreviateNumber(totalStakeONE)}, $${abbreviateNumber(swapTradingVolumeSum)}`

const oneBotMetrics =
'Bot total earns, weekly users, daily messages: ' +
`*${abbreviateNumber(balance / Math.pow(10, 18))}* ONE` +
const oneBotWeeklyMetrics =
'Bot weekly earns, users, messages: ' +
`*${abbreviateNumber(+weeklyRevenue)}* ONE` +
`, ${lessThan100(abbreviateNumber(weeklyUsers))}` +
`, ${lessThan100(abbreviateNumber(dailyMessages))}`

return `${networkUsage}\n${assetsUpdate}\n${oneBotMetrics}`
const oneBotMetrics =
'Bot total earns, users, messages: ' +
`*${abbreviateNumber(balance / Math.pow(10, 18))}* ONE` +
`, ${lessThan100(abbreviateNumber(uniqueUsersCount))}` +
`, ${lessThan100(abbreviateNumber(totalMessage))}`

return `${networkUsage}\n${assetsUpdate}\n${oneBotWeeklyMetrics}\n${oneBotMetrics}`
}

public async generateReportEngagementByCommand (days: number): Promise<string> {
Expand Down

0 comments on commit b6d611a

Please sign in to comment.