project-nomad/admin/app/controllers/easy_setup_controller.ts

54 lines
1.5 KiB
TypeScript

import { SystemService } from '#services/system_service'
import { ZimService } from '#services/zim_service'
import { CollectionManifestService } from '#services/collection_manifest_service'
import KVStore from '#models/kv_store'
import { inject } from '@adonisjs/core'
import type { HttpContext } from '@adonisjs/core/http'
@inject()
export default class EasySetupController {
constructor(
private systemService: SystemService,
private zimService: ZimService
) {}
async index({ inertia }: HttpContext) {
const [services, remoteOllamaUrl] = await Promise.all([
this.systemService.getServices({ installedOnly: false }),
KVStore.getValue('ai.remoteOllamaUrl'),
])
return inertia.render('easy-setup/index', {
system: {
services: services,
remoteOllamaUrl: remoteOllamaUrl ?? '',
},
})
}
async complete({ inertia }: HttpContext) {
return inertia.render('easy-setup/complete')
}
async listCuratedCategories({}: HttpContext) {
return await this.zimService.listCuratedCategories()
}
async refreshManifests({}: HttpContext) {
const manifestService = new CollectionManifestService()
const [zimChanged, mapsChanged, wikiChanged] = await Promise.all([
manifestService.fetchAndCacheSpec('zim_categories'),
manifestService.fetchAndCacheSpec('maps'),
manifestService.fetchAndCacheSpec('wikipedia'),
])
return {
success: true,
changed: {
zim_categories: zimChanged,
maps: mapsChanged,
wikipedia: wikiChanged,
},
}
}
}