feat: insurance crud
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "InsurancePartner" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"logo" TEXT NOT NULL,
|
||||
"websiteUrl" TEXT,
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 1000,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "InsurancePartner_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
@@ -343,4 +343,17 @@ model HomepageBanner {
|
||||
enum BannerMediaType {
|
||||
IMAGE
|
||||
VIDEO
|
||||
}
|
||||
|
||||
model InsurancePartner {
|
||||
id Int @id @default(autoincrement())
|
||||
|
||||
name String
|
||||
logo String
|
||||
websiteUrl String?
|
||||
sortOrder Int @default(1000)
|
||||
isActive Boolean @default(true)
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import newsMediaRoutes from './routes/newsMedia.routes.js';
|
||||
import importRoutes from './routes/importRoutes.js';
|
||||
import healthCheckRoutes from './routes/healthCheck.route.js';
|
||||
import homepageBannerRoutes from './routes/homepageBanner.routes.js';
|
||||
import insurancePartnerRoutes from './routes/insurancePartner.routes.js';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
@@ -59,6 +60,7 @@ app.use('/api/newsMedia', newsMediaRoutes);
|
||||
app.use('/api/import', importRoutes);
|
||||
app.use('/api/health-check', healthCheckRoutes);
|
||||
app.use('/api/homepage-banners', homepageBannerRoutes);
|
||||
app.use('/api/insurance-partners', insurancePartnerRoutes);
|
||||
|
||||
const PORT = process.env.PORT || 5008;
|
||||
app.listen(PORT, () => {
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
import prisma from '../prisma/client.js';
|
||||
|
||||
export const createInsurancePartner = async (req, res) => {
|
||||
try {
|
||||
const { name, logo, websiteUrl, sortOrder, isActive } = req.body;
|
||||
|
||||
if (!name || !logo) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Name and logo are required',
|
||||
});
|
||||
}
|
||||
|
||||
const partner = await prisma.insurancePartner.create({
|
||||
data: {
|
||||
name,
|
||||
logo,
|
||||
websiteUrl,
|
||||
sortOrder,
|
||||
isActive,
|
||||
},
|
||||
});
|
||||
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
data: partner,
|
||||
message: 'Insurance partner created successfully',
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Failed to create insurance partner',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const getInsurancePartners = async (req, res) => {
|
||||
try {
|
||||
const partners = await prisma.insurancePartner.findMany({
|
||||
orderBy: {
|
||||
sortOrder: 'asc',
|
||||
},
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: partners,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Failed to fetch insurance partners',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const getActiveInsurancePartners = async (req, res) => {
|
||||
try {
|
||||
const partners = await prisma.insurancePartner.findMany({
|
||||
where: {
|
||||
isActive: true,
|
||||
},
|
||||
orderBy: {
|
||||
sortOrder: 'asc',
|
||||
},
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: partners,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Failed to fetch insurance partners',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const getInsurancePartner = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
|
||||
const partner = await prisma.insurancePartner.findUnique({
|
||||
where: {
|
||||
id: Number(id),
|
||||
},
|
||||
});
|
||||
|
||||
if (!partner) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: 'Insurance partner not found',
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: partner,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Failed to fetch insurance partner',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const updateInsurancePartner = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
|
||||
const { name, logo, websiteUrl, sortOrder, isActive } = req.body;
|
||||
|
||||
const partner = await prisma.insurancePartner.update({
|
||||
where: {
|
||||
id: Number(id),
|
||||
},
|
||||
data: {
|
||||
name,
|
||||
logo,
|
||||
websiteUrl,
|
||||
sortOrder,
|
||||
isActive,
|
||||
},
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: partner,
|
||||
message: 'Insurance partner updated successfully',
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Failed to update insurance partner',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const deleteInsurancePartner = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
|
||||
await prisma.insurancePartner.delete({
|
||||
where: {
|
||||
id: Number(id),
|
||||
},
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: 'Insurance partner deleted successfully',
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Failed to delete insurance partner',
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
import express from 'express';
|
||||
|
||||
import {
|
||||
createInsurancePartner,
|
||||
getInsurancePartners,
|
||||
getActiveInsurancePartners,
|
||||
getInsurancePartner,
|
||||
updateInsurancePartner,
|
||||
deleteInsurancePartner,
|
||||
} from '../controllers/insurancePartner.controller.js';
|
||||
|
||||
import jwtAuthMiddleware from '../middleware/auth.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/active', getActiveInsurancePartners);
|
||||
|
||||
router.post('/', jwtAuthMiddleware, createInsurancePartner);
|
||||
|
||||
router.get('/getAll', jwtAuthMiddleware, getInsurancePartners);
|
||||
|
||||
router.get('/:id', jwtAuthMiddleware, getInsurancePartner);
|
||||
|
||||
router.put('/:id', jwtAuthMiddleware, updateInsurancePartner);
|
||||
|
||||
router.delete('/:id', jwtAuthMiddleware, deleteInsurancePartner);
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user