Migrate config to PostgreSQL
This commit is contained in:
+16
-30
@@ -1,11 +1,12 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { requireAuth } from '@/lib/auth'
|
||||
import { readConfig, writeConfig, generateId } from '@/lib/config'
|
||||
import { readConfig, addConfigItem, updateConfigItem, deleteConfigItem } from '@/lib/config'
|
||||
|
||||
export async function GET(req: NextRequest) {
|
||||
const err = await requireAuth(req)
|
||||
if (err) return err
|
||||
return NextResponse.json(readConfig())
|
||||
const config = await readConfig()
|
||||
return NextResponse.json(config)
|
||||
}
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
@@ -13,16 +14,12 @@ export async function POST(req: NextRequest) {
|
||||
if (err) return err
|
||||
|
||||
const { type, item } = await req.json()
|
||||
const config = readConfig()
|
||||
|
||||
if (!['site', 'database', 'service'].includes(type)) {
|
||||
return NextResponse.json({ error: 'Geçersiz type' }, { status: 400 })
|
||||
}
|
||||
|
||||
const newItem = { ...item, id: generateId() }
|
||||
|
||||
if (type === 'site') config.sites.push(newItem)
|
||||
else if (type === 'database') config.databases.push(newItem)
|
||||
else if (type === 'service') config.services.push(newItem)
|
||||
else return NextResponse.json({ error: 'Geçersiz type' }, { status: 400 })
|
||||
|
||||
writeConfig(config)
|
||||
const newItem = await addConfigItem(type as any, item)
|
||||
return NextResponse.json(newItem)
|
||||
}
|
||||
|
||||
@@ -31,13 +28,12 @@ export async function DELETE(req: NextRequest) {
|
||||
if (err) return err
|
||||
|
||||
const { type, id } = await req.json()
|
||||
const config = readConfig()
|
||||
|
||||
if (!['site', 'database', 'service'].includes(type)) {
|
||||
return NextResponse.json({ error: 'Geçersiz type' }, { status: 400 })
|
||||
}
|
||||
|
||||
if (type === 'site') config.sites = config.sites.filter(s => s.id !== id)
|
||||
else if (type === 'database') config.databases = config.databases.filter(d => d.id !== id)
|
||||
else if (type === 'service') config.services = config.services.filter(s => s.id !== id)
|
||||
|
||||
writeConfig(config)
|
||||
await deleteConfigItem(type as any, id)
|
||||
return NextResponse.json({ ok: true })
|
||||
}
|
||||
|
||||
@@ -46,21 +42,11 @@ export async function PUT(req: NextRequest) {
|
||||
if (err) return err
|
||||
|
||||
const { type, id, item } = await req.json()
|
||||
const config = readConfig()
|
||||
|
||||
if (type === 'site') {
|
||||
const idx = config.sites.findIndex(s => s.id === id)
|
||||
if (idx !== -1) config.sites[idx] = { ...config.sites[idx], ...item }
|
||||
} else if (type === 'database') {
|
||||
const idx = config.databases.findIndex(d => d.id === id)
|
||||
if (idx !== -1) config.databases[idx] = { ...config.databases[idx], ...item }
|
||||
} else if (type === 'service') {
|
||||
const idx = config.services.findIndex(s => s.id === id)
|
||||
if (idx !== -1) config.services[idx] = { ...config.services[idx], ...item }
|
||||
} else {
|
||||
|
||||
if (!['site', 'database', 'service'].includes(type)) {
|
||||
return NextResponse.json({ error: 'Geçersiz type' }, { status: 400 })
|
||||
}
|
||||
|
||||
writeConfig(config)
|
||||
await updateConfigItem(type as any, id, item)
|
||||
return NextResponse.json({ ok: true })
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ export async function GET(req: NextRequest) {
|
||||
|
||||
if (!dbId) return NextResponse.json({ error: 'dbId gerekli' }, { status: 400 })
|
||||
|
||||
const config = readConfig()
|
||||
const config = await readConfig()
|
||||
const db = config.databases.find(d => d.id === dbId)
|
||||
if (!db) return NextResponse.json({ error: 'DB bulunamadı' }, { status: 404 })
|
||||
|
||||
@@ -37,7 +37,7 @@ export async function POST(req: NextRequest) {
|
||||
}
|
||||
|
||||
const { dbId, sql } = body
|
||||
const config = readConfig()
|
||||
const config = await readConfig()
|
||||
const db = config.databases.find(d => d.id === dbId)
|
||||
if (!db) return NextResponse.json({ error: 'DB bulunamadı' }, { status: 404 })
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ export async function POST(req: NextRequest) {
|
||||
if (err) return err
|
||||
|
||||
const { siteId } = await req.json()
|
||||
const config = readConfig()
|
||||
const config = await readConfig()
|
||||
const site = config.sites.find(s => s.id === siteId)
|
||||
if (!site) return NextResponse.json({ error: 'Site bulunamadı' }, { status: 404 })
|
||||
|
||||
@@ -40,7 +40,7 @@ export async function PUT(req: NextRequest) {
|
||||
if (secret !== process.env.PANEL_SECRET)
|
||||
return NextResponse.json({ error: 'Yetkisiz' }, { status: 401 })
|
||||
|
||||
const config = readConfig()
|
||||
const config = await readConfig()
|
||||
const results = await Promise.all(config.sites.map(site => pingAndLog(site).then(r => ({ id: site.id, ...r }))))
|
||||
return NextResponse.json(results)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user