diff --git a/api/apiBaseRouter.js b/api/apiBaseRouter.js new file mode 100644 index 0000000000000000000000000000000000000000..ebf3692bfd9c1afd30137ed0ea24b123ded6d3cc --- /dev/null +++ b/api/apiBaseRouter.js @@ -0,0 +1,14 @@ +const healthCheckRouter = require('./health-check/routes'); +const layoutRouter = require('./layout/routes'); +const apiBaseRouter = require('express').Router(); + +// Exposed endpoints +apiBaseRouter.use('/health-check', healthCheckRouter); + +// apiBaseRouter.use('/pan', panRouter); + +// apiBaseRouter.use('/otp', otpRouter); + +apiBaseRouter.use('/widget', layoutRouter); + +module.exports = apiBaseRouter; diff --git a/api/health-check/controller.js b/api/health-check/controller.js new file mode 100644 index 0000000000000000000000000000000000000000..2fda039dd9ae20e9eb671958065d56bbbd64ebe9 --- /dev/null +++ b/api/health-check/controller.js @@ -0,0 +1,17 @@ + + +const healthCheck = (req, res, next) => { + try { + + + + return res.sendStatus(200); + } catch (error) { + + console.log(error) + } +}; + +module.exports = { + healthCheck, +}; diff --git a/api/health-check/routes.js b/api/health-check/routes.js new file mode 100644 index 0000000000000000000000000000000000000000..adbcd23400b9c9b5c0437905a9452a330707752f --- /dev/null +++ b/api/health-check/routes.js @@ -0,0 +1,7 @@ +const healthCheckRouter = require('express').Router(); +const { healthCheck } = require('./controller'); + +healthCheckRouter.get('/', healthCheck); + + +module.exports = healthCheckRouter; diff --git a/api/layout/business.js b/api/layout/business.js new file mode 100644 index 0000000000000000000000000000000000000000..73ab557ed99ea2dea4a1e854a037a7f654385999 --- /dev/null +++ b/api/layout/business.js @@ -0,0 +1,25 @@ +/* eslint-disable prefer-promise-reject-errors */ +/* eslint-disable no-throw-literal */ +// const logger = require('utils/logger'); +const getAllWidgetService = require('../layout/service'); + + + +const getAllWidget = async () => { + try { + // logger.info(`Entering | getAllWidget BusinessLogic |`); + const response = await getAllWidgetService.getAllWidget(); + // logger.info(`Exiting | generateAadhaarOtp BusinessLogic |`); + return { status: '200', response } + } catch (error) { + // logger.error(` Error | getAllWidget BusinessLogic | ${error}`) + throw error + } + +}; + + + +module.exports = { + getAllWidget, +}; diff --git a/api/layout/controller.js b/api/layout/controller.js new file mode 100644 index 0000000000000000000000000000000000000000..e06ad30387899f199c9457d2fd94e9e0091d274d --- /dev/null +++ b/api/layout/controller.js @@ -0,0 +1,29 @@ +// const logger = require('utils/logger'); +const layoutBusiness = require('./business'); +// const Joi = require('joi'); + +const getAllWidget = async (req, res, next) => { + try { + console.log("comign here") + // logger.info(`Entering | getAllWidget Controller | ${req.body}`); + // const schema = Joi.object({ + // aadhaarNumber: Joi.string().required(), + // }); + // const { error } = schema.validate({ }); + // if (error) { + // logger.error(` Error | getAllWidget Controller | ${JSON.stringify(error)}`) + // return next(new ExpressError('BAD_REQUEST')); + // } + const response = await layoutBusiness.getAllWidget(); + // logger.info(`Exiting | getAllWidget Controller |`); + return res.status(response.status).json({ data: response }); + } catch (error) { + // logger.error(` Error | getAllWidget Controller | ${error}`) + next(new ExpressError(error)); + } +}; + + +module.exports = { + getAllWidget, +}; \ No newline at end of file diff --git a/api/layout/routes.js b/api/layout/routes.js new file mode 100644 index 0000000000000000000000000000000000000000..eaa7087603557d94d92a8178724933dc17847738 --- /dev/null +++ b/api/layout/routes.js @@ -0,0 +1,10 @@ +const layoutRouter = require('express').Router(); +const { getAllWidget} = require('./controller'); + +layoutRouter.get('/allLayout', getAllWidget); + +// layoutRouter.post('/aadhaarOtpVerify', aadhaarOtpVerify); + +// layoutRouter.post('/aadhaarPanSimilarity', aadhaarPanSimilarity); + +module.exports = layoutRouter; \ No newline at end of file diff --git a/api/layout/service.js b/api/layout/service.js new file mode 100644 index 0000000000000000000000000000000000000000..b5c9e2396ccdd9943655f3f9f327206600203f66 --- /dev/null +++ b/api/layout/service.js @@ -0,0 +1,20 @@ +// const logger = require('utils/logger'); + + + +const getAllWidget = async () => { + try { + // logger.info(`Entering | getAllWidget Service |`); + const response = "123"; + // logger.info(`Exiting | getAllWidget Service |`); + return { status: '200', response } + } catch (error) { + // logger.error(` Error | getAllWidget Service | ${error}`) + throw error + } + +}; + +module.exports = { + getAllWidget, +}; \ No newline at end of file diff --git a/api/models/template.js b/api/models/template.js new file mode 100644 index 0000000000000000000000000000000000000000..98426ca9bfbcf2b0828eebb1b286412f91a933d5 --- /dev/null +++ b/api/models/template.js @@ -0,0 +1,22 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +// Define schema for widgets within a template or page +const WidgetRefSchema = new Schema({ + widgetId: { type: mongoose.Schema.Types.ObjectId, ref: 'Widget', required: true }, // Reference to the Widget model + position: { type: Number, required: true }, + startTime: { type: Date, required: true }, + endTime: { type: Date, required: true } +}); + +// Define main Template schema +const TemplateSchema = new Schema({ + name: { type: String, required: true }, + desc: { type: String }, + widgets: [WidgetRefSchema], + hashId: { type: String, unique: true, required: true }, + createdAt: { type: Date, default: Date.now }, + updatedAt: { type: Date, default: Date.now } +}); + +module.exports = mongoose.model('Template', TemplateSchema); diff --git a/api/models/widget.js b/api/models/widget.js new file mode 100644 index 0000000000000000000000000000000000000000..f95ddc3a04fa642a09e68e12b15a06bb85ea53cf --- /dev/null +++ b/api/models/widget.js @@ -0,0 +1,45 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +// Define schema for the button data +const ButtonDataSchema = new Schema({ + url: { type: String, required: true }, + title: { type: String, required: true } +}); + +// Define schema for banner data +const BannerDataSchema = new Schema({ + imageName: { type: String, default: '' }, + headingText: { type: String, required: true }, + subHeadingText: { type: String, required: true }, + landingUrl: { type: String, required: true }, + timerPosition: { type: String, default: null }, + timerColor: { type: String, default: null } +}); + +// Define schema for list items +const ListItemSchema = new Schema({ + bannerData: { type: BannerDataSchema, required: true }, + display_order: { type: Number, required: true }, + dimension: { + length: { type: Number, required: true }, + breadth: { type: Number, required: true } + }, + banner_title: { type: String, required: true } +}); + +// Define main Widget schema +const WidgetSchema = new Schema({ + title: { type: String, required: true }, + layout: { type: String, required: true }, + priority: { type: Number, required: true }, + enable: { type: Boolean, default: true }, + buttonData: [ButtonDataSchema], + sectionHeadingText: { type: String, required: true }, + apiUrl: { type: String, required: true }, + list: [ListItemSchema], + createdAt: { type: Date, default: Date.now }, + updatedAt: { type: Date, default: Date.now } +}); + +module.exports = mongoose.model('Widget', WidgetSchema); diff --git a/server.js b/server.js index b99148637ddd19a5c8a6a6330ab58cada353805f..c4ce85d076b11f611eeb14db0c54c5e7bfb246b2 100644 --- a/server.js +++ b/server.js @@ -7,6 +7,9 @@ const connectDB = require('./db'); const app = express(); app.use(bodyParser.json()); +const apiBaseRouter = require('./api/apiBaseRouter'); + +const baseURL = '/api-service'; // Connect to MongoDB connectDB(); @@ -15,6 +18,9 @@ connectDB(); const swaggerDocument = YAML.load('./swagger.yaml'); app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); +// API base URL +app.use(apiBaseRouter); + // Start the server const PORT = process.env.PORT || 5000; diff --git a/swagger.yaml b/swagger.yaml index d63e67b4734a809138f2c0f3e454d404ec207382..a2b52340b94b86aa320d9df8dfa015d8cc66f589 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -3,6 +3,7 @@ info: title: Layout Management API version: 1.0.0 description: API for managing layouts including creating, retrieving, and deleting layouts. + paths: /api/layout/{layout}: get: @@ -79,7 +80,7 @@ paths: 404: description: Layout not found - /api/AllLayout: + /widget/allLayout: get: summary: Get all layouts responses: