From 19861f32537ec3ef6bc370a218a7ea02edbe182a Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:06:41 -0700 Subject: [PATCH 1/7] Made the schema for the lighthouse metrics. --- Server/.dockerignore | 1 + Server/docker/docker-compose.yaml | 24 +++++++++++++++++++++ Server/docker/mongo/Dockerfile | 2 ++ Server/docker/mongoDB.Dockerfile | 2 ++ Server/docker/redis.Dockerfile | 2 ++ Server/docker/redis/Dockerfile | 2 ++ Server/docker/server.Dockerfile | 13 +++++++++++ Server/models/Metrics.js | 36 +++++++++++++++++++++++++++++++ 8 files changed, 82 insertions(+) create mode 100644 Server/.dockerignore create mode 100644 Server/docker/docker-compose.yaml create mode 100644 Server/docker/mongo/Dockerfile create mode 100644 Server/docker/mongoDB.Dockerfile create mode 100644 Server/docker/redis.Dockerfile create mode 100644 Server/docker/redis/Dockerfile create mode 100644 Server/docker/server.Dockerfile create mode 100644 Server/models/Metrics.js diff --git a/Server/.dockerignore b/Server/.dockerignore new file mode 100644 index 000000000..d88f9054e --- /dev/null +++ b/Server/.dockerignore @@ -0,0 +1 @@ +./docker \ No newline at end of file diff --git a/Server/docker/docker-compose.yaml b/Server/docker/docker-compose.yaml new file mode 100644 index 000000000..e878a5338 --- /dev/null +++ b/Server/docker/docker-compose.yaml @@ -0,0 +1,24 @@ +version: "3" +services: + server: + image: uptime_server:latest + ports: + - "5000:5000" + env_file: + - .env + depends_on: + - redis + - mongodb + redis: + image: uptime_redis:latest + ports: + - "6379:6379" + volumes: + - ./redis/data:/data + mongodb: + image: uptime_database_mongo:latest + command: ["mongod", "--quiet"] + ports: + - "27017:27017" + volumes: + - ./mongo/data:/data/db diff --git a/Server/docker/mongo/Dockerfile b/Server/docker/mongo/Dockerfile new file mode 100644 index 000000000..fa79e8a92 --- /dev/null +++ b/Server/docker/mongo/Dockerfile @@ -0,0 +1,2 @@ +FROM mongo +EXPOSE 27017 \ No newline at end of file diff --git a/Server/docker/mongoDB.Dockerfile b/Server/docker/mongoDB.Dockerfile new file mode 100644 index 000000000..fa79e8a92 --- /dev/null +++ b/Server/docker/mongoDB.Dockerfile @@ -0,0 +1,2 @@ +FROM mongo +EXPOSE 27017 \ No newline at end of file diff --git a/Server/docker/redis.Dockerfile b/Server/docker/redis.Dockerfile new file mode 100644 index 000000000..af68ec61e --- /dev/null +++ b/Server/docker/redis.Dockerfile @@ -0,0 +1,2 @@ +FROM redis +EXPOSE 6379 \ No newline at end of file diff --git a/Server/docker/redis/Dockerfile b/Server/docker/redis/Dockerfile new file mode 100644 index 000000000..af68ec61e --- /dev/null +++ b/Server/docker/redis/Dockerfile @@ -0,0 +1,2 @@ +FROM redis +EXPOSE 6379 \ No newline at end of file diff --git a/Server/docker/server.Dockerfile b/Server/docker/server.Dockerfile new file mode 100644 index 000000000..8a9bf04e3 --- /dev/null +++ b/Server/docker/server.Dockerfile @@ -0,0 +1,13 @@ +FROM node:20 + +WORKDIR /app + +COPY ../../package*.json ./ + +RUN npm install + +COPY ../../ ./ + +EXPOSE 5000 + +CMD ["node", "index.js"] \ No newline at end of file diff --git a/Server/models/Metrics.js b/Server/models/Metrics.js new file mode 100644 index 000000000..06be8ca3a --- /dev/null +++ b/Server/models/Metrics.js @@ -0,0 +1,36 @@ +const mongoose = require("mongoose"); + +const MetricsSchema = mongoose.Schema( + { + monitorId: { + type: mongoose.Schema.Types.ObjectId, + ref: "Monitor", + immutable: true, + }, + accessibility: { + type: Object, + required: true, + }, + bestPractices: { + type: Object, + required: true, + }, + seo: { + type: Object, + required: true, + }, + performance: { + type: Object, + required: true, + }, + timestamp: { + type: Date, + default: Date.now, + }, + }, + { + timestamps: true, + } +); + +module.exports = mongoose.model("LighthouseMetrics", MetricsSchema); From 5883fa0747737b6551d36a57d593c65aa07ed16b Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:08:17 -0700 Subject: [PATCH 2/7] Added docs. --- Server/models/Metrics.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Server/models/Metrics.js b/Server/models/Metrics.js index 06be8ca3a..6f85ee6b8 100644 --- a/Server/models/Metrics.js +++ b/Server/models/Metrics.js @@ -1,5 +1,16 @@ const mongoose = require("mongoose"); +/** + * Mongoose schema for storing metrics from Google Lighthouse. + * @typedef {Object} MetricsSchema + * @property {mongoose.Schema.Types.ObjectId} monitorId - Reference to the Monitor model. + * @property {Object} accessibility - Metrics related to accessibility category. + * @property {Object} bestPractices - Metrics related to best practices category. + * @property {Object} seo - Metrics related to SEO category. + * @property {Object} performance - Metrics related to performance category. + * @property {Date} timestamp - Timestamp when the metrics were recorded. + */ + const MetricsSchema = mongoose.Schema( { monitorId: { @@ -33,4 +44,9 @@ const MetricsSchema = mongoose.Schema( } ); +/** + * Mongoose model for storing metrics from Google Lighthouse. + * @typedef {mongoose.Model} LighthouseMetricsModel + */ + module.exports = mongoose.model("LighthouseMetrics", MetricsSchema); From 7b95894239bc53c684198e542b0449cd29a4c3c2 Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:36:17 -0700 Subject: [PATCH 3/7] Delete Server/Docker folder. --- Server/docker/docker-compose.yaml | 24 ------------------------ Server/docker/mongo/Dockerfile | 2 -- Server/docker/mongoDB.Dockerfile | 2 -- Server/docker/redis.Dockerfile | 2 -- Server/docker/redis/Dockerfile | 2 -- Server/docker/server.Dockerfile | 13 ------------- 6 files changed, 45 deletions(-) delete mode 100644 Server/docker/docker-compose.yaml delete mode 100644 Server/docker/mongo/Dockerfile delete mode 100644 Server/docker/mongoDB.Dockerfile delete mode 100644 Server/docker/redis.Dockerfile delete mode 100644 Server/docker/redis/Dockerfile delete mode 100644 Server/docker/server.Dockerfile diff --git a/Server/docker/docker-compose.yaml b/Server/docker/docker-compose.yaml deleted file mode 100644 index e878a5338..000000000 --- a/Server/docker/docker-compose.yaml +++ /dev/null @@ -1,24 +0,0 @@ -version: "3" -services: - server: - image: uptime_server:latest - ports: - - "5000:5000" - env_file: - - .env - depends_on: - - redis - - mongodb - redis: - image: uptime_redis:latest - ports: - - "6379:6379" - volumes: - - ./redis/data:/data - mongodb: - image: uptime_database_mongo:latest - command: ["mongod", "--quiet"] - ports: - - "27017:27017" - volumes: - - ./mongo/data:/data/db diff --git a/Server/docker/mongo/Dockerfile b/Server/docker/mongo/Dockerfile deleted file mode 100644 index fa79e8a92..000000000 --- a/Server/docker/mongo/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM mongo -EXPOSE 27017 \ No newline at end of file diff --git a/Server/docker/mongoDB.Dockerfile b/Server/docker/mongoDB.Dockerfile deleted file mode 100644 index fa79e8a92..000000000 --- a/Server/docker/mongoDB.Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM mongo -EXPOSE 27017 \ No newline at end of file diff --git a/Server/docker/redis.Dockerfile b/Server/docker/redis.Dockerfile deleted file mode 100644 index af68ec61e..000000000 --- a/Server/docker/redis.Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM redis -EXPOSE 6379 \ No newline at end of file diff --git a/Server/docker/redis/Dockerfile b/Server/docker/redis/Dockerfile deleted file mode 100644 index af68ec61e..000000000 --- a/Server/docker/redis/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM redis -EXPOSE 6379 \ No newline at end of file diff --git a/Server/docker/server.Dockerfile b/Server/docker/server.Dockerfile deleted file mode 100644 index 8a9bf04e3..000000000 --- a/Server/docker/server.Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM node:20 - -WORKDIR /app - -COPY ../../package*.json ./ - -RUN npm install - -COPY ../../ ./ - -EXPOSE 5000 - -CMD ["node", "index.js"] \ No newline at end of file From a36665396d18c747c01912c1e22f0381bd5c77ad Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:37:59 -0700 Subject: [PATCH 4/7] Got rid of extra timestamp field. --- Server/models/Metrics.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Server/models/Metrics.js b/Server/models/Metrics.js index 6f85ee6b8..b53c4e9f1 100644 --- a/Server/models/Metrics.js +++ b/Server/models/Metrics.js @@ -8,7 +8,6 @@ const mongoose = require("mongoose"); * @property {Object} bestPractices - Metrics related to best practices category. * @property {Object} seo - Metrics related to SEO category. * @property {Object} performance - Metrics related to performance category. - * @property {Date} timestamp - Timestamp when the metrics were recorded. */ const MetricsSchema = mongoose.Schema( @@ -34,10 +33,6 @@ const MetricsSchema = mongoose.Schema( type: Object, required: true, }, - timestamp: { - type: Date, - default: Date.now, - }, }, { timestamps: true, From 3c2ea63fc7db16a037706b8db6dce873b1b7ae0f Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:42:15 -0700 Subject: [PATCH 5/7] Got rid of category objects and changed to just the number. --- Server/models/Metrics.js | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/Server/models/Metrics.js b/Server/models/Metrics.js index b53c4e9f1..2d14907d7 100644 --- a/Server/models/Metrics.js +++ b/Server/models/Metrics.js @@ -1,15 +1,5 @@ const mongoose = require("mongoose"); -/** - * Mongoose schema for storing metrics from Google Lighthouse. - * @typedef {Object} MetricsSchema - * @property {mongoose.Schema.Types.ObjectId} monitorId - Reference to the Monitor model. - * @property {Object} accessibility - Metrics related to accessibility category. - * @property {Object} bestPractices - Metrics related to best practices category. - * @property {Object} seo - Metrics related to SEO category. - * @property {Object} performance - Metrics related to performance category. - */ - const MetricsSchema = mongoose.Schema( { monitorId: { @@ -18,19 +8,19 @@ const MetricsSchema = mongoose.Schema( immutable: true, }, accessibility: { - type: Object, + type: Number, required: true, }, bestPractices: { - type: Object, + type: Number, required: true, }, seo: { - type: Object, + type: Number, required: true, }, performance: { - type: Object, + type: Number, required: true, }, }, @@ -39,9 +29,4 @@ const MetricsSchema = mongoose.Schema( } ); -/** - * Mongoose model for storing metrics from Google Lighthouse. - * @typedef {mongoose.Model} LighthouseMetricsModel - */ - module.exports = mongoose.model("LighthouseMetrics", MetricsSchema); From 7736828c95a2c20ea8f5c4a868e6d211ad79655d Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:42:48 -0700 Subject: [PATCH 6/7] Added JS docs. --- Server/models/Metrics.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Server/models/Metrics.js b/Server/models/Metrics.js index 2d14907d7..d5cbe184b 100644 --- a/Server/models/Metrics.js +++ b/Server/models/Metrics.js @@ -1,5 +1,15 @@ const mongoose = require("mongoose"); +/** + * Mongoose schema for storing metrics from Google Lighthouse. + * @typedef {Object} MetricsSchema + * @property {mongoose.Schema.Types.ObjectId} monitorId - Reference to the Monitor model. + * @property {number} accessibility - Accessibility score. + * @property {number} bestPractices - Best practices score. + * @property {number} seo - SEO score. + * @property {number} performance - Performance score. + */ + const MetricsSchema = mongoose.Schema( { monitorId: { @@ -29,4 +39,9 @@ const MetricsSchema = mongoose.Schema( } ); +/** + * Mongoose model for storing metrics from Google Lighthouse. + * @typedef {mongoose.Model} LighthouseMetricsModel + */ + module.exports = mongoose.model("LighthouseMetrics", MetricsSchema); From c5bb183fec087a3b76ea816316108fae7d5d057e Mon Sep 17 00:00:00 2001 From: M M Date: Mon, 15 Jul 2024 14:48:13 -0700 Subject: [PATCH 7/7] Changed name to better describe the object. --- Server/models/Metrics.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/models/Metrics.js b/Server/models/Metrics.js index d5cbe184b..cc8d6c931 100644 --- a/Server/models/Metrics.js +++ b/Server/models/Metrics.js @@ -2,7 +2,7 @@ const mongoose = require("mongoose"); /** * Mongoose schema for storing metrics from Google Lighthouse. - * @typedef {Object} MetricsSchema + * @typedef {Object} PageSpeedCheck * @property {mongoose.Schema.Types.ObjectId} monitorId - Reference to the Monitor model. * @property {number} accessibility - Accessibility score. * @property {number} bestPractices - Best practices score. @@ -10,7 +10,7 @@ const mongoose = require("mongoose"); * @property {number} performance - Performance score. */ -const MetricsSchema = mongoose.Schema( +const PageSpeedCheck = mongoose.Schema( { monitorId: { type: mongoose.Schema.Types.ObjectId, @@ -41,7 +41,7 @@ const MetricsSchema = mongoose.Schema( /** * Mongoose model for storing metrics from Google Lighthouse. - * @typedef {mongoose.Model} LighthouseMetricsModel + * @typedef {mongoose.Model} LighthouseMetricsModel */ -module.exports = mongoose.model("LighthouseMetrics", MetricsSchema); +module.exports = mongoose.model("PageSpeedCheck", PageSpeedCheck);