From c7b76060b2e4ed6fa239ab378864346f6a76e59d Mon Sep 17 00:00:00 2001 From: Ana Arriaga Coll Date: Sat, 20 Feb 2021 13:10:41 +0100 Subject: [PATCH 1/3] Chessito - reestructuring repo --- index.js | 4 +-- src/conf/index.js | 3 --- .../bot.js => controllers/bot.controller.js} | 4 +-- .../commands.controller.js} | 0 src/database/connectors/index.js | 26 ------------------- .../mongoose.js => models/db-connector.js} | 6 ++--- src/models/{lichess.js => user.model.js} | 6 ++--- src/{routes.js => routes/index.js} | 4 +-- .../lichess => routes}/router-lichess.js | 2 +- .../strategies}/lichess-strategy.js | 0 .../lichess.js => lichess.service.js} | 8 +++--- 11 files changed, 17 insertions(+), 46 deletions(-) rename src/{bot/bot.js => controllers/bot.controller.js} (82%) rename src/{bot/commands.js => controllers/commands.controller.js} (100%) delete mode 100644 src/database/connectors/index.js rename src/{database/connectors/mongoose.js => models/db-connector.js} (88%) rename src/models/{lichess.js => user.model.js} (54%) rename src/{routes.js => routes/index.js} (81%) rename src/{services/lichess => routes}/router-lichess.js (90%) rename src/{services/lichess => routes/strategies}/lichess-strategy.js (100%) rename src/services/{lichess/lichess.js => lichess.service.js} (54%) diff --git a/index.js b/index.js index 462b377..c1650ac 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ import conf from "./src/conf/index.js"; -import Bot from "./src/bot/bot.js"; -import Router from "./src/routes.js"; +import Bot from "./src/controllers/bot.controller.js"; +import Router from "./src/routes/index.js"; const router = new Router(); router.registerRoutes(); diff --git a/src/conf/index.js b/src/conf/index.js index f359287..215baad 100644 --- a/src/conf/index.js +++ b/src/conf/index.js @@ -15,8 +15,5 @@ export default { }, server: { port: 3000, - }, - database: { - connector: "Mongoose" } }; diff --git a/src/bot/bot.js b/src/controllers/bot.controller.js similarity index 82% rename from src/bot/bot.js rename to src/controllers/bot.controller.js index 1e93452..e747eee 100644 --- a/src/bot/bot.js +++ b/src/controllers/bot.controller.js @@ -1,6 +1,6 @@ import { Telegraf } from "telegraf"; -import Commands from "./commands.js" -import LichessService from "../services/lichess/lichess.js"; +import Commands from "./commands.controller.js" +import LichessService from "../services/lichess.service.js"; export default class Bot { diff --git a/src/bot/commands.js b/src/controllers/commands.controller.js similarity index 100% rename from src/bot/commands.js rename to src/controllers/commands.controller.js diff --git a/src/database/connectors/index.js b/src/database/connectors/index.js deleted file mode 100644 index 08f0037..0000000 --- a/src/database/connectors/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import conf from "../../conf/index.js"; -import MongooseConnector from "./mongoose.js"; - -export default class DBConnector { - - constructor() { - this.connectorType = conf.database.connector; - this.connector = null; - } - - getConnector() { - if (this.connector !== null) { - return this.connector; - } - - if (this.connectorType === "Mongoose") { - this.connector = new MongooseConnector(); - } else { - // default connector - this.connector = new MongooseConnector(); - } - - return this.connector; - } - -} diff --git a/src/database/connectors/mongoose.js b/src/models/db-connector.js similarity index 88% rename from src/database/connectors/mongoose.js rename to src/models/db-connector.js index 40fbe84..fd2f4d0 100644 --- a/src/database/connectors/mongoose.js +++ b/src/models/db-connector.js @@ -1,7 +1,7 @@ import mongoose from 'mongoose'; -import conf from "../../conf/index.js"; +import conf from "../conf/index.js"; -export default class MongooseConnector { +export default class DBConnector { constructor() { const { dbUserName, dbPassword, dbName } = conf.mongodb; @@ -22,7 +22,7 @@ export default class MongooseConnector { } } - close() { + disconnect() { mongoose.connection.close(); } } diff --git a/src/models/lichess.js b/src/models/user.model.js similarity index 54% rename from src/models/lichess.js rename to src/models/user.model.js index 0d61c34..399863e 100644 --- a/src/models/lichess.js +++ b/src/models/user.model.js @@ -1,9 +1,9 @@ -import DBConnector from "../database/connectors/index.js"; +import DBConnector from "./db-connector.js"; -export default class LichessModel { +export default class UserModel { constructor() { - this.connector = new DBConnector().getConnector(); + this.connector = new DBConnector(); this.connector.connect(); } diff --git a/src/routes.js b/src/routes/index.js similarity index 81% rename from src/routes.js rename to src/routes/index.js index bf73827..8d2ece3 100644 --- a/src/routes.js +++ b/src/routes/index.js @@ -1,7 +1,7 @@ import express from "express"; import passport from "passport"; -import conf from "./conf/index.js"; -import LichessRouter from "./services/lichess/router-lichess.js"; +import conf from "../conf/index.js"; +import LichessRouter from "./router-lichess.js"; export default class Router { diff --git a/src/services/lichess/router-lichess.js b/src/routes/router-lichess.js similarity index 90% rename from src/services/lichess/router-lichess.js rename to src/routes/router-lichess.js index 2153d6e..02ce118 100644 --- a/src/services/lichess/router-lichess.js +++ b/src/routes/router-lichess.js @@ -1,4 +1,4 @@ -import lichessStrategy from "./lichess-strategy.js"; +import lichessStrategy from "./strategies/lichess-strategy.js"; export default class LichessRouter { constructor(app, passport) { diff --git a/src/services/lichess/lichess-strategy.js b/src/routes/strategies/lichess-strategy.js similarity index 100% rename from src/services/lichess/lichess-strategy.js rename to src/routes/strategies/lichess-strategy.js diff --git a/src/services/lichess/lichess.js b/src/services/lichess.service.js similarity index 54% rename from src/services/lichess/lichess.js rename to src/services/lichess.service.js index 4c7a03d..b7e9289 100644 --- a/src/services/lichess/lichess.js +++ b/src/services/lichess.service.js @@ -1,18 +1,18 @@ -import LichessModel from "../../models/lichess.js"; +import User from "../models/user.model.js"; export default class LichessService { constructor(credentials) { this.credentials = credentials; - this.lichessModel = new LichessModel(this.credentials); + this.user = new User(this.credentials); } login(chatId) { - this.lichessModel.login(chatId); + this.user.login(chatId); return `https://chessito.org/auth/lichess?chat_id=${chatId}`; } getLiveGames() { - return this.lichessModel.getLiveGames(); + return this.user.getLiveGames(); } } From a6c73a1699179ac44d3b183808c575c2c64c6dc8 Mon Sep 17 00:00:00 2001 From: Ana Arriaga Coll Date: Sat, 20 Feb 2021 13:21:31 +0100 Subject: [PATCH 2/3] Chessito - change routes files name --- index.js | 2 +- src/routes/{index.js => index.routes.js} | 2 +- src/routes/{router-lichess.js => lichess.routes.js} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/routes/{index.js => index.routes.js} (90%) rename src/routes/{router-lichess.js => lichess.routes.js} (100%) diff --git a/index.js b/index.js index c1650ac..73cd622 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ import conf from "./src/conf/index.js"; import Bot from "./src/controllers/bot.controller.js"; -import Router from "./src/routes/index.js"; +import Router from "./src/routes/index.routes.js"; const router = new Router(); router.registerRoutes(); diff --git a/src/routes/index.js b/src/routes/index.routes.js similarity index 90% rename from src/routes/index.js rename to src/routes/index.routes.js index 8d2ece3..9e65f33 100644 --- a/src/routes/index.js +++ b/src/routes/index.routes.js @@ -1,7 +1,7 @@ import express from "express"; import passport from "passport"; import conf from "../conf/index.js"; -import LichessRouter from "./router-lichess.js"; +import LichessRouter from "./lichess.routes.js"; export default class Router { diff --git a/src/routes/router-lichess.js b/src/routes/lichess.routes.js similarity index 100% rename from src/routes/router-lichess.js rename to src/routes/lichess.routes.js From 749da17a3bfaa31bb0830d24d9350f3366968dbe Mon Sep 17 00:00:00 2001 From: Ana Arriaga Coll Date: Sat, 20 Feb 2021 14:03:35 +0100 Subject: [PATCH 3/3] Chessito - mongoose schemas implementation --- src/{models => database}/db-connector.js | 4 ++++ src/database/schemas.js | 25 ++++++++++++++++++++++++ src/models/user.model.js | 7 ++++--- 3 files changed, 33 insertions(+), 3 deletions(-) rename src/{models => database}/db-connector.js (88%) create mode 100644 src/database/schemas.js diff --git a/src/models/db-connector.js b/src/database/db-connector.js similarity index 88% rename from src/models/db-connector.js rename to src/database/db-connector.js index fd2f4d0..0f933ad 100644 --- a/src/models/db-connector.js +++ b/src/database/db-connector.js @@ -25,4 +25,8 @@ export default class DBConnector { disconnect() { mongoose.connection.close(); } + + buildModel(type, schema) { + return mongoose.model(type, mongoose.Schema(schema)); + } } diff --git a/src/database/schemas.js b/src/database/schemas.js new file mode 100644 index 0000000..f418a21 --- /dev/null +++ b/src/database/schemas.js @@ -0,0 +1,25 @@ +// eslint-disable-next-line import/prefer-default-export +export const userSchema = { + id: { + type: String, + required: true, + trim: true, + index: true, + unique: true, + }, + name: { + type: String, + required: true, + lowercase: true, + trim: true, + index: true, + }, + email: { + type: String, + required: true, + lowercase: true, + trim: true, + index: true, + unique: true, + } +}; \ No newline at end of file diff --git a/src/models/user.model.js b/src/models/user.model.js index 399863e..dc20e26 100644 --- a/src/models/user.model.js +++ b/src/models/user.model.js @@ -1,10 +1,11 @@ -import DBConnector from "./db-connector.js"; +import DBConnector from "../database/db-connector.js"; +import { userSchema } from "../database/schemas.js"; export default class UserModel { - constructor() { this.connector = new DBConnector(); - this.connector.connect(); + this.connection = this.connector.connect(); + this.user = this.connector.buildModel("User", userSchema); } login(chatId) {