Start exposing data via api
This commit is contained in:
@ -1,11 +1,14 @@
|
|||||||
import Replay from '#models/replay'
|
import Replay from '#models/replay'
|
||||||
import env from '#start/env'
|
import env from '#start/env'
|
||||||
import type { HttpContext } from '@adonisjs/core/http'
|
import type { HttpContext } from '@adonisjs/core/http'
|
||||||
|
import db from '@adonisjs/lucid/services/db'
|
||||||
const SENTRY_TOKEN = env.get('SENTRY_TOKEN')
|
const SENTRY_TOKEN = env.get('SENTRY_TOKEN')
|
||||||
const SENTRY_ORG = env.get('SENTRY_ORG')
|
const SENTRY_ORG = env.get('SENTRY_ORG')
|
||||||
let recordsUpdated = 0
|
let recordsUpdated = 0
|
||||||
import redis from '@adonisjs/redis/services/main'
|
import redis from '@adonisjs/redis/services/main'
|
||||||
|
import { DateTime } from 'luxon'
|
||||||
|
|
||||||
|
const thirtyDaysAgo = DateTime.now().minus({ days: 30 }).toSQL()
|
||||||
|
|
||||||
interface ApiResponse<T> {
|
interface ApiResponse<T> {
|
||||||
data: T;
|
data: T;
|
||||||
@ -20,6 +23,24 @@ interface SentryPagination {
|
|||||||
}
|
}
|
||||||
export default class ReplaysController {
|
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) {
|
public async list({ request, inertia }: HttpContext) {
|
||||||
const page = request.input('page', 1)
|
const page = request.input('page', 1)
|
||||||
const perPage = 20
|
const perPage = 20
|
||||||
|
@ -13,3 +13,4 @@ router.on('/').renderInertia('home')
|
|||||||
router.get('/replays', [ReplaysController, 'index'])
|
router.get('/replays', [ReplaysController, 'index'])
|
||||||
router.get('/list', [ReplaysController, 'list'
|
router.get('/list', [ReplaysController, 'list'
|
||||||
])
|
])
|
||||||
|
router.get('/search', [ReplaysController, 'search'])
|
Reference in New Issue
Block a user