routes_migrations.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { Hono } from 'hono'
  2. import { APIClient } from '@d8d-appcontainer/api'
  3. import type { Variables } from './app.tsx'
  4. import type { WithAuth } from './app.tsx'
  5. import { migrations } from './migrations.ts'
  6. import debug from "debug";
  7. const log = {
  8. api: debug("api:migrations"),
  9. };
  10. // 初始化数据库
  11. const initDatabase = async (apiClient: APIClient) => {
  12. log.api('正在执行数据库迁移...')
  13. const migrationsResult = await apiClient.database.executeLiveMigrations(migrations)
  14. // log.app('数据库迁移完成 %O',migrationsResult)
  15. log.api('数据库迁移完成')
  16. return migrationsResult
  17. }
  18. export function createMigrationsRoutes(withAuth: WithAuth) {
  19. const migrationsRoutes = new Hono<{ Variables: Variables }>()
  20. migrationsRoutes.get('/', async (c) => {
  21. const apiClient = c.get('apiClient')
  22. const migrationsResult = await initDatabase(apiClient)
  23. const failedResult = migrationsResult?.find((migration) => migration.status === 'failed')
  24. if (failedResult) {
  25. log.api('数据库迁移失败 %O', failedResult)
  26. return c.json({ error: '数据库迁移失败', failedResult }, 500)
  27. }
  28. return c.json({ success: true })
  29. })
  30. return migrationsRoutes
  31. }