refactor(sever): app type

This commit is contained in:
RainbowBird
2026-01-05 18:05:24 +08:00
parent 09d1fe6143
commit 1ec22a4855
3 changed files with 33 additions and 40 deletions
+31 -38
View File
@@ -55,46 +55,39 @@ async function createApp() {
const authInstance = resolved.auth
const app = new Hono<HonoEnv>()
app.use(
'/api/*',
cors({
origin: origin => getTrustedOrigin(origin),
credentials: true,
}),
)
app.use(honoLogger())
app.use('*', sessionMiddleware(authInstance))
app.get('/session', authGuard, (c) => {
return c.json({
session: c.get('session'),
user: c.get('user')!,
})
})
app.on(['POST', 'GET'], '/api/auth/*', c => authInstance.handler(c.req.raw))
app.route('/api/characters', createCharacterRoutes(resolved.characterService))
app.onError((err, c) => {
if (err instanceof ApiError) {
.use(
'/api/*',
cors({
origin: origin => getTrustedOrigin(origin),
credentials: true,
}),
)
.use(honoLogger())
.use('*', sessionMiddleware(authInstance))
.get('/session', authGuard, (c) => {
return c.json({
error: err.errorCode,
message: err.message,
details: err.details,
}, err.statusCode)
}
session: c.get('session'),
user: c.get('user')!,
})
})
.on(['POST', 'GET'], '/api/auth/*', c => authInstance.handler(c.req.raw))
.route('/api/characters', createCharacterRoutes(resolved.characterService))
.onError((err, c) => {
if (err instanceof ApiError) {
return c.json({
error: err.errorCode,
message: err.message,
details: err.details,
}, err.statusCode)
}
logger.withError(err).error('Unhandled error')
const internalError = createInternalError()
return c.json({
error: internalError.errorCode,
message: internalError.message,
}, internalError.statusCode)
})
logger.withError(err).error('Unhandled error')
const internalError = createInternalError()
return c.json({
error: internalError.errorCode,
message: internalError.message,
}, internalError.statusCode)
})
logger.withFields({ port: 3000 }).log('Server started')
+1 -1
View File
@@ -9,7 +9,7 @@ import { bearer } from 'better-auth/plugins'
import * as authSchema from '../schemas/accounts'
export function createAuth(db: Database, env: Env) {
export function createAuth(db: Database<typeof authSchema>, env: Env) {
return betterAuth({
database: drizzleAdapter(db, {
provider: 'pg',
+1 -1
View File
@@ -2,7 +2,7 @@ import postgres from 'postgres'
import { drizzle } from 'drizzle-orm/postgres-js'
export type Database = ReturnType<typeof createDrizzle>
export type Database<TSchema extends Record<string, unknown>> = ReturnType<typeof createDrizzle<TSchema>>
export function createDrizzle<TSchema extends Record<string, unknown>>(dsn: string, schema?: TSchema) {
return drizzle(postgres(dsn), { schema })