| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { Hono } from 'hono'
- import { APIClient } from '@d8d-appcontainer/api'
- import type { Variables } from './app.tsx'
- import type { WithAuth } from './app.tsx'
- import { migrations } from './migrations.ts'
- import debug from "debug";
- const log = {
- api: debug("api:migrations"),
- };
- export function createMigrationsRoutes(withAuth: WithAuth) {
- const migrationsRoutes = new Hono<{ Variables: Variables }>()
- migrationsRoutes.get('/', async (c) => {
- const apiClient = c.get('apiClient')
- log.api('正在执行数据库迁移...')
- const migrationsResult = await apiClient.database.executeLiveMigrations(migrations)
- // log.app('数据库迁移完成 %O',migrationsResult)
-
- const failedResult = migrationsResult?.find((migration) => migration.status === 'failed')
- if (failedResult) {
- log.api('数据库迁移失败 %O', failedResult)
- return c.json({ error: '数据库迁移失败', failedResult }, 500)
- }
- return c.json({ success: true })
- })
- migrationsRoutes.get('/history', async (c) => {
- const apiClient = c.get('apiClient')
- log.api('正在执行数据库迁移...')
- const MIRGRATIONS_TABLE = 'knex_migrations'
- const hasTable = await apiClient.database.schema.hasTable(MIRGRATIONS_TABLE);
- let history = []
- if(hasTable)
- history = await apiClient.database.table(MIRGRATIONS_TABLE).orderBy('id', 'desc')
-
- return c.json({
- success: true,
- history
- })
- })
- migrationsRoutes.get('/rollback', async (c) => {
- const apiClient = c.get('apiClient')
- const all = c.req.query('all') === 'true'
- log.api('正在执行数据库回滚...')
-
- const rollbackResult = await apiClient.database.rollbackLiveMigrations(migrations, all)
-
- const failedResult = rollbackResult?.find((migration) => migration.status === 'failed')
- if (failedResult) {
- log.api('数据库回滚失败 %O', failedResult)
- return c.json({ error: '数据库回滚失败', failedResult }, 500)
- }
- return c.json({ success: true })
- })
- return migrationsRoutes
- }
|