Start exposing data via api

This commit is contained in:
Mike Conrad
2025-05-19 16:32:54 -04:00
parent 7ffe4d2825
commit 692a086aa5
2 changed files with 23 additions and 1 deletions

View File

@ -1,11 +1,14 @@
import Replay from '#models/replay'
import env from '#start/env'
import type { HttpContext } from '@adonisjs/core/http'
import db from '@adonisjs/lucid/services/db'
const SENTRY_TOKEN = env.get('SENTRY_TOKEN')
const SENTRY_ORG = env.get('SENTRY_ORG')
let recordsUpdated = 0
import redis from '@adonisjs/redis/services/main'
import { DateTime } from 'luxon'
const thirtyDaysAgo = DateTime.now().minus({ days: 30 }).toSQL()
interface ApiResponse<T> {
data: T;
@ -20,6 +23,24 @@ interface SentryPagination {
}
export default class ReplaysController {
public async search({ response}: HttpContext) {
console.log('thir', thirtyDaysAgo)
let results = await db.rawQuery(`SELECT
"user" ->> 'display_name' AS user_email,
SUM(duration) AS duration,
COUNT(duration) AS sessions,
AVG(duration) AS avg_duration
FROM
replays
WHERE
finished_at >= ?
GROUP BY
user_email
ORDER BY
SUM(duration) desc`, [thirtyDaysAgo]
)
response.json(results)
}
public async list({ request, inertia }: HttpContext) {
const page = request.input('page', 1)
const perPage = 20

View File

@ -13,3 +13,4 @@ router.on('/').renderInertia('home')
router.get('/replays', [ReplaysController, 'index'])
router.get('/list', [ReplaysController, 'list'
])
router.get('/search', [ReplaysController, 'search'])