Initial commit
This commit is contained in:
54
api/core/settings/routes.ts
Normal file
54
api/core/settings/routes.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import express, { type Request, type Response } from 'express'
|
||||
import fs from 'fs/promises'
|
||||
import path from 'path'
|
||||
import { asyncHandler } from '../../utils/asyncHandler.js'
|
||||
import { successResponse } from '../../utils/response.js'
|
||||
import { NOTEBOOK_ROOT } from '../../config/paths.js'
|
||||
import type { SettingsDTO } from '../../../shared/types.js'
|
||||
|
||||
const router = express.Router()
|
||||
|
||||
const getSettingsPath = () => path.join(NOTEBOOK_ROOT, '.config', 'settings.json')
|
||||
|
||||
router.get(
|
||||
'/',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const settingsPath = getSettingsPath()
|
||||
try {
|
||||
const content = await fs.readFile(settingsPath, 'utf-8')
|
||||
const settings = JSON.parse(content)
|
||||
successResponse(res, settings)
|
||||
} catch (error) {
|
||||
successResponse(res, {})
|
||||
}
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/',
|
||||
asyncHandler(async (req: Request, res: Response) => {
|
||||
const settings = req.body as SettingsDTO
|
||||
const settingsPath = getSettingsPath()
|
||||
const configDir = path.dirname(settingsPath)
|
||||
|
||||
try {
|
||||
await fs.mkdir(configDir, { recursive: true })
|
||||
|
||||
let existingSettings = {}
|
||||
try {
|
||||
const content = await fs.readFile(settingsPath, 'utf-8')
|
||||
existingSettings = JSON.parse(content)
|
||||
} catch {
|
||||
}
|
||||
|
||||
const newSettings = { ...existingSettings, ...settings }
|
||||
await fs.writeFile(settingsPath, JSON.stringify(newSettings, null, 2), 'utf-8')
|
||||
|
||||
successResponse(res, newSettings)
|
||||
} catch (error) {
|
||||
throw error
|
||||
}
|
||||
}),
|
||||
)
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user