Start exposing data via api
This commit is contained in:
@ -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
|
||||
|
@ -13,3 +13,4 @@ router.on('/').renderInertia('home')
|
||||
router.get('/replays', [ReplaysController, 'index'])
|
||||
router.get('/list', [ReplaysController, 'list'
|
||||
])
|
||||
router.get('/search', [ReplaysController, 'search'])
|
Reference in New Issue
Block a user