magic: added a way for running async functions in the top level jsx code

This commit is contained in:
2023-01-11 21:38:37 +01:00
parent 71280fba5c
commit fab8398a7a
8 changed files with 91 additions and 44 deletions
+4 -2
View File
@@ -9,6 +9,7 @@ import { StatusCodes } from 'http-status-codes'
import {
createDatabase,
createDatabaseWrapper,
createProblem,
createSolution,
deleteProblem,
@@ -39,6 +40,7 @@ import { initialDatabaseValue } from './db/example-data'
import { validateObjectKeys } from '../shared/utils'
import { setupOAuth } from './auth'
import { DatabaseConnection } from '../shared/database'
type SessionId = Opaque<string, string, 'session'>
@@ -47,7 +49,7 @@ export interface SessionService {
getUserForSession(sid: SessionId): UserId | null
}
export async function createApiRouter() {
export async function createApiRouter(): Promise<[Router, DatabaseConnection]> {
const sessionStore: Record<SessionId, UserId> = {}
const sessions: SessionService = {
createSession(userId: UserId) {
@@ -428,5 +430,5 @@ export async function createApiRouter() {
res.json(requestedUser)
})
return r
return [r, createDatabaseWrapper(db)]
}