diff --git a/.env b/.env new file mode 100644 index 0000000000000000000000000000000000000000..be824930b9d0ec33c18cfa346720ff94e64aeec1 --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +NODE_ENV=development +SERVICE_BASE_URL=https://30dd-206-84-239-127.ngrok-free.app +SERVICE_PORT=5000 +LOG_LEVEL=debug diff --git a/api/models/template.js b/api/models/template.js index 98426ca9bfbcf2b0828eebb1b286412f91a933d5..d1de02750e8d9344a6224b288f915cab1e41b1ba 100644 --- a/api/models/template.js +++ b/api/models/template.js @@ -13,6 +13,11 @@ const WidgetRefSchema = new Schema({ const TemplateSchema = new Schema({ name: { type: String, required: true }, desc: { type: String }, + platform: { + type: String, + enum: ['web', 'mobile', 'both'], + required: true + }, widgets: [WidgetRefSchema], hashId: { type: String, unique: true, required: true }, createdAt: { type: Date, default: Date.now }, diff --git a/api/template/business.js b/api/template/business.js index 50653188ab408e84e0b415b34875de56afa93483..c42fc3bd1f8632b90a90d05e47e16a8a8103b85c 100644 --- a/api/template/business.js +++ b/api/template/business.js @@ -14,9 +14,9 @@ const updateAndMapWidget = async (page,widgetId,position, startTime, endTime) => }; -const createTemplate = async (name, desc, widgets, hashId) => { +const createTemplate = async (name, desc,platform, widgets, hashId) => { try { - const response = await templateService.createTemplate(name, desc, widgets, hashId); + const response = await templateService.createTemplate(name, desc,platform, widgets, hashId); return { status: '200', response } } catch (error) { throw error @@ -24,9 +24,9 @@ const createTemplate = async (name, desc, widgets, hashId) => { }; -const getParticularTemplate = async (page) => { +const getParticularTemplate = async (page,platform) => { try { - const response = await templateService.getParticularTemplate(page); + const response = await templateService.getParticularTemplate(page,platform); console.log(page,"Pagessssssss"); return { status: '200', response } } catch (error) { diff --git a/api/template/controller.js b/api/template/controller.js index fb4786479a42493797b8269d8d96b94c3dbd09ee..a8cc12034e16876014791771c1887ea03329d3bb 100644 --- a/api/template/controller.js +++ b/api/template/controller.js @@ -18,8 +18,8 @@ const updateAndMapWidget = async (req, res, next) => { const createTemplate = async (req, res, next) => { try { - const { name, desc, widgets, hashId } = req.body; - const response = await templateBusiness.createTemplate(name, desc, widgets, hashId); + const { name, desc,platform, widgets, hashId } = req.body; + const response = await templateBusiness.createTemplate(name, desc,platform, widgets, hashId); return res.status(response.status).json({ data: response }); } catch (error) { throw error @@ -29,8 +29,8 @@ const createTemplate = async (req, res, next) => { const getParticularTemplate = async (req, res) => { try { console.log("GET template details of a particular page"); - const { page } = req.params; - const response = await templateBusiness.getParticularTemplate(page); + const { page,platform } = req.params; + const response = await templateBusiness.getParticularTemplate(page,platform); return res.status(response.status).json({ data: response }); } catch (error) { throw error; diff --git a/api/template/service.js b/api/template/service.js index 2d172f80cf95a58ae3996d033f56a178d027cfd2..1bcae567540a31315475064f4acd1cc2771dc49c 100644 --- a/api/template/service.js +++ b/api/template/service.js @@ -37,12 +37,12 @@ const updateAndMapWidget = async (page,widgetId,position, startTime, endTime) => }; -const createTemplate = async (name, desc, widgets, hashId) => { +const createTemplate = async (name, desc, platform, widgets, hashId) => { try { - console.log("in service") const newTemplate = new Template({ name, desc, + platform, widgets, hashId }); @@ -56,13 +56,11 @@ const createTemplate = async (name, desc, widgets, hashId) => { }; -const getParticularTemplate = async (page,res) => { +const getParticularTemplate = async (page,platform) => { try { - const template = await Template.findOne({ name: page}).populate('widgets.widgetId'); + const template = await Template.findOne({ name: page,platform}).populate('widgets.widgetId'); if (!template) { - // return res.status(404).json({ error: 'Template not found' }); - console.error('Template not found'); - res.status(404).send(); + return res.status(404).json({ error: 'Template not found' }); } return template; } catch (error) { diff --git a/package.json b/package.json index 67e81ce2539b9773c56c009cc04aaebddef40e72..0e24b61f394f6fb0c6071a643e3d3ae672da8b19 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "body-parser": "^1.20.2", + "dotenv": "^16.4.5", "express": "^4.19.2", "mongoose": "^8.6.0", "nodemon": "^3.1.4", diff --git a/server.js b/server.js index 524f6cb34b36594784eee390a1e75c406b604ff8..f8fe990819079e79b36a888f3c77ca03a1f6bd99 100644 --- a/server.js +++ b/server.js @@ -1,4 +1,4 @@ -// server.js +require('dotenv').config(); const express = require('express'); const bodyParser = require('body-parser'); const swaggerUi = require('swagger-ui-express'); @@ -19,10 +19,11 @@ app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); // API base URL app.use(apiBaseRouter); - // Start the server -const PORT = process.env.PORT || 5000; +const PORT = process.env.SERVICE_PORT || 5000; +const BASE_URL = process.env.SERVICE_BASE_URL || `http://localhost:${PORT}`; + app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); - console.log(`Swagger UI available at http://localhost:${PORT}/api-docs`); + console.log(`Swagger UI available at ${BASE_URL}/api-docs`); }); diff --git a/swagger.yaml b/swagger.yaml index 812af00b4f006f197380c03fae8bb1ca83dca530..63757fda8507a69fba3cbf4baa84384bdff69ff5 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -21,6 +21,12 @@ paths: schema: type: string description: The page for which template details are requested. + - in: path + name: platform + required: true + schema: + type: string + description: The platform for which template details are requested. responses: '200': description: Template retrieved successfully @@ -313,6 +319,11 @@ paths: type: string description: A description of the template example: "Template for the homepage widget" + platform: + type: string + enum: ['web', 'mobile', 'both'] + description: The platform for which the template is intended + example: "web" widgets: type: array description: A list of widgets mapped to the template