|
1 | 1 | import { H3Error } from 'h3' |
2 | 2 |
|
3 | | -import { initializeDatabase } from '~/lib/db' |
| 3 | +import { initializeDatabase, useDB } from '~/lib/db' |
4 | 4 | import { ENV } from '~/lib/env' |
5 | 5 | import { logger } from '~/lib/logger' |
6 | | -import { initializeStorage } from '~/lib/storage' |
| 6 | +import { initializeStorage, useStorageAdapter } from '~/lib/storage' |
7 | 7 |
|
8 | 8 | export default defineNitroPlugin(async (nitro) => { |
9 | | - logger.info(`🚀 Starting GitHub Actions Cache Server (${useRuntimeConfig().version})`) |
| 9 | + const version = useRuntimeConfig().version |
| 10 | + logger.info(`🚀 Starting GitHub Actions Cache Server (${version})`) |
10 | 11 |
|
11 | 12 | await initializeDatabase() |
12 | 13 | await initializeStorage() |
@@ -34,6 +35,28 @@ export default defineNitroPlugin(async (nitro) => { |
34 | 35 | }) |
35 | 36 | } |
36 | 37 |
|
| 38 | + if (!version) throw new Error('No version found in runtime config') |
| 39 | + |
| 40 | + const db = useDB() |
| 41 | + const existing = await db |
| 42 | + .selectFrom('meta') |
| 43 | + .where('key', '=', 'version') |
| 44 | + .select('value') |
| 45 | + .executeTakeFirst() |
| 46 | + |
| 47 | + if (!existing || existing.value !== version) { |
| 48 | + logger.info( |
| 49 | + `Version changed from ${existing?.value ?? '[no version, first install]'} to ${version}. Pruning cache...`, |
| 50 | + ) |
| 51 | + await useStorageAdapter().pruneCaches() |
| 52 | + } |
| 53 | + |
| 54 | + if (existing) { |
| 55 | + await db.updateTable('meta').set('value', version).where('key', '=', 'version').execute() |
| 56 | + } else { |
| 57 | + await db.insertInto('meta').values({ key: 'version', value: version }).execute() |
| 58 | + } |
| 59 | + |
37 | 60 | if (process.send) process.send('nitro:ready') |
38 | 61 | }) |
39 | 62 |
|
|
0 commit comments