diff --git a/app/Controllers/Http/StatsController.ts b/app/Controllers/Http/StatsController.ts index 9363a66..877b2f5 100644 --- a/app/Controllers/Http/StatsController.ts +++ b/app/Controllers/Http/StatsController.ts @@ -1,16 +1,18 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -import {getTotalStats, getWeeklyStats, getMonthlyStats, getOtherStats} from 'App/Helpers/StatsHelper' -import DockerBuild from "App/Models/DockerBuild"; -import DockerCommand from "App/Models/DockerCommand"; +import {getTotalStats, getWeeklyStats, getMonthlyStats, getOtherStats, getDailyStats} from 'App/Helpers/StatsHelper' +import DockerBuild from "App/Models/DockerBuild" +import DockerCommand from "App/Models/DockerCommand" export default class StatsController { public async get ({response}: HttpContextContract) { - const weekly = await getWeeklyStats(); - const monthly = await getMonthlyStats(); - const total = await getTotalStats(); - const other = await getOtherStats(); + const daily = await getDailyStats() + const weekly = await getWeeklyStats() + const monthly = await getMonthlyStats() + const total = await getTotalStats() + const other = await getOtherStats() return response.status(200).send({ + daily: daily, weekly: weekly, monthly: monthly, total: total, diff --git a/app/Helpers/StatsHelper.ts b/app/Helpers/StatsHelper.ts index 3de8809..c9419bb 100644 --- a/app/Helpers/StatsHelper.ts +++ b/app/Helpers/StatsHelper.ts @@ -2,10 +2,22 @@ import DockerCommand from "App/Models/DockerCommand"; import axios from "axios"; import DockerBuild from "App/Models/DockerBuild"; +async function getDailyStats() { + const commands = await DockerCommand.query().where('created_at', '>', new Date().getTime()) + const {data} = await axios.get('https://wakatime.com/api/v1/users/arthurdanjou/stats/last_7_days') + const builds = await DockerBuild.query().where('created_at', '>', new Date().getTime()) + + return { + development_hours: data.data[0].grand_total.total_seconds / 60 / 60, + docker_commands_run: commands.length, + docker_build_count: builds.length, + } +} + async function getWeeklyStats() { const commands = await DockerCommand.query().where('created_at', '>', new Date().getTime() - 1000 * 60 * 60 * 24 * 7) const {data} = await axios.get('https://wakatime.com/api/v1/users/arthurdanjou/stats/last_7_days') - const builds = await DockerBuild.query().where('created_at', '>', new Date().getMonth() - 1) + const builds = await DockerBuild.query().where('created_at', '>', new Date().getTime() - 1000 * 60 * 60 * 24 * 7) return { development_hours: data.data.total_seconds / 60 / 60, @@ -56,4 +68,4 @@ async function getOtherStats() { } } -export {getMonthlyStats, getTotalStats, getWeeklyStats, getOtherStats} +export {getMonthlyStats, getTotalStats, getWeeklyStats, getOtherStats, getDailyStats} diff --git a/app/Helpers/WakatimeLogger.ts b/app/Helpers/WakatimeLogger.ts new file mode 100644 index 0000000..b3db090 --- /dev/null +++ b/app/Helpers/WakatimeLogger.ts @@ -0,0 +1,17 @@ +import axios from "axios"; +import Env from '@ioc:Adonis/Core/Env' + +async function login() { + await axios.post("https://wakatime.com/oauth/token", + { + client_id: Env.get('WAKATIME_USERNAME'), + client_secret: Env.get('WAKATIME_PASSWORD') + }, + { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export { login } diff --git a/start/routes.ts b/start/routes.ts index 953e2d9..1926a98 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -35,6 +35,9 @@ Tasks: kernel : setTimeout or cron Deezer songs: 1min */ +Route.get('/source', async ({response}: HttpContextContract) => { + return response.redirect('https://github.com/arthurdanjou/artapi') +}) Route.get('/location', 'LocationsController.get') Route.get('/location/history', 'LocationsController.history') Route.get('/stats', 'StatsController.get')