ស្រដៀងគ្នានឹងការលុបទំព័រការផ្សាយ ការលុបទំព័រស្តាទិកត្រូវធ្វើឡើងនៅក្នុងក្បួនចុងផ្លូវឬ API Endpoint នៅក្នុងថត src/pages/api/admin/page/delete ។ ឯកសារនៃក្បួនចុងផ្លូវឬ API Endpoint ត្រូវមានឈ្មោះថា [id].js ដែលជាប៉ារ៉ាម៉ែតមួយចាំទទួលយកអត្តសញ្ញាណរបស់ទំព័រស្តាទិកដែលត្រូវលុប។ បានន័យថាផ្លូវសំរាប់លុបឯកសារស្តាទិកក៏ជាផ្លូវឌីណាមិកមួយដែរ។
// src/pages/api/admin/page/delete/[id].js
import page from "../../../../../data/page.js"
export async function GET({ locals, params, redirect, url }){
const userAdmin = locals.userAdmin
const userAuth = locals.userAuth
const prisma = locals.prisma
let currentPage = url.searchParams.get('page') || ''
if(currentPage){
currentPage = "?page=" + currentPage
}
if(userAuth?.userId){
if(userAdmin){
await page.delete({prisma, params})
}
return redirect("/admin/page"+currentPage, 302)
}else{
return redirect('/login', 302)
}
}
ដោយហេតុថា ក្បួនចុងផ្លូវឬ API Endpoint ខាងលើត្រូវការនាំចូលក្បួនខ្នាតនៅក្នុងឯសារ page.js នៅក្នុងថត src/data មកប្រើការនៅក្នុងការលុបទិន្នន័យដែលជាទំព័រស្តាទិក ដូចនេះយើងចាំបាច់ត្រូវបង្កើតក្បួនខ្នាតចាំបាច់នៅក្នុងឯកសារ page.js នេះ ក្នុងគោលបំណងផ្តល់លទ្ធភាពអោយក្បួនចុងផ្លូវឬ API Endpoint អាចលុបទិន្នន័យនៃទំព័រស្តាទិកបានគ្រប់ពេលវេលា។ មួយវិញទៀត មុននឹងលុបទិន្នន័យនៃទំព័រស្តាទិកណាមួយ អ្នកនិពន្ធចាំបាច់ត្រូវឆ្លងកាត់ការត្រួតពិនិត្យពីតួនាទីរបស់ខ្លួន។ មានតែអ្នកនិពន្ធមានតួនាទីជា Admin តែប៉ុណ្ណោះ ទើបមានសិទ្ធិអាចលុបទំព័រស្តាទិកបាន។
// src/data/page.js
class Page{
async count(req, query={}){
return await req.prisma.page.count(query)
}
async create(req){
const new_page = {
title: req.body.title,
content: req.body.content,
thumb: req.body.thumb,
date: req.body.datetime,
}
await req.prisma.page.create({ data: new_page })
}
async delete(req){
await req.prisma.page.delete({ where: {id: req.params.id } })
}
async getItems(req, amount){
return await req.prisma.page.findMany({
take: amount,
orderBy: [{ date: "desc" }, { id: "desc" }]
})
}
async paginate(req, amount){
const pages = await req.prisma.page.findMany({
orderBy: [{ date: "desc" }, { id: "desc" }],
skip: amount * (parseInt(req.currentPage) - 1),
take: amount
})
return pages
}
}
export default new Page()
Netlify: https://khmerweb-dynamic-blog.netlify.app/admin/page