Skip to content

Commit

Permalink
feat: add mongoose SSL support
Browse files Browse the repository at this point in the history
  • Loading branch information
Nathan Russo committed Aug 3, 2022
1 parent 0b3180c commit d8edb93
Show file tree
Hide file tree
Showing 32 changed files with 119 additions and 172 deletions.
12 changes: 9 additions & 3 deletions .env.dev
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,16 @@ DB_USER=experience
DB_DATABASE=experience
DB_PASSWORD=experience
DB_PORT=27017
# Synchronize true only with MongoDB
DB_DRIVER=mongodb
SSL=false
SSL_VALIDATE=false,
SSL_CA=
REPLICA_SET=
DB_ORM_DEFAULT=Mongoose

# TypeORM
DB_SYNCHRONIZE=true
DB_TYPE_DEFAULT=Mongoose
# Type only SQL
# MikroORM and TypeORM
DB_TYPE=postgresql

CACHE_HOST=redis
Expand Down
67 changes: 0 additions & 67 deletions .env.prod

This file was deleted.

9 changes: 7 additions & 2 deletions config/custom-environment-variables.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,12 @@
"port": "DB_PORT",
"username": "DB_USER",
"password": "DB_PASSWORD",
"database": "DB_DATABASE"
"database": "DB_DATABASE",
"driver": "DB_DRIVER",
"ssl": "SSL",
"sslValidate": "SSL_VALIDATE",
"sslCA": "SSL_CA",
"replicaSet": "REPLICA_SET"
},
"MikroORM": {
"host": "DB_HOST",
Expand All @@ -33,7 +38,7 @@
"dbName": "DB_DATABASE",
"type": "DB_TYPE"
},
"default" : "DB_TYPE_DEFAULT"
"default" : "DB_ORM_DEFAULT"
},
"cache": {
"redis": {
Expand Down
7 changes: 6 additions & 1 deletion config/development.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,12 @@
"port": 27017,
"database": "experience",
"username": "experience",
"password": "experience"
"password": "experience",
"driver": "mongo",
"ssl": false,
"sslValidate": false,
"sslCA": "",
"replicaSet": ""
},
"MikroORM": {
"type": "postgresql",
Expand Down
37 changes: 0 additions & 37 deletions config/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,5 @@
"Mongoose",
"TypeORM",
"MikroORM"
],
"domains": [
{
"name": "Auth",
"fileInfra": "Token",
"handler": "Auth"
},
{
"name": "File",
"fileInfra": "File",
"handler": "File"
},
{
"name": "Item",
"fileInfra": "Item",
"handler": "Item"
},
{
"name": "Notification",
"fileInfra": "Notification",
"handler": "Notification"
},
{
"name": "Role",
"fileInfra": "Role",
"handler": "Role"
},
{
"name": "User",
"fileInfra": "User",
"handler": "User"
},
{
"name": "Shared",
"fileInfra": "Base",
"handler": "Index"
}
]
}
7 changes: 6 additions & 1 deletion config/production.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,12 @@
"port": 27017,
"database": "experience",
"username": "experience",
"password": "experience"
"password": "experience",
"driver": "mongo",
"ssl": false,
"sslValidate": false,
"sslCA": "",
"replicaSet": ""
},
"MikroORM": {
"type": "postgresql",
Expand Down
7 changes: 6 additions & 1 deletion config/test.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,12 @@
"port": 27017,
"database": "experience",
"username": "experience",
"password": "experience"
"password": "experience",
"driver": "mongo",
"ssl": false,
"sslValidate": false,
"sslCA": "",
"replicaSet": ""
},
"MikroORM": {
"type": "postgresql",
Expand Down
4 changes: 2 additions & 2 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ module.exports = {
"<rootDir>/src/Role/Infrastructure/Repositories/RoleTypeORMRepository.ts",
"<rootDir>/src/Item/Infrastructure/Repositories/ItemTypeORMRepository.ts",
"<rootDir>/src/Auth/Infrastructure/Repositories/TokenRedisRepository.ts",
"<rootDir>/src/Shared/Infrastructure/Database/MikroORMCreateConnection.ts",
"<rootDir>/src/Shared/Infrastructure/Database/TypeORMCreateConnection.ts ",
"<rootDir>/src/Shared/Infrastructure/Database/CreateMikroORMConnection.ts",
"<rootDir>/src/Shared/Infrastructure/Database/CreateTypeORMConnection.ts ",
"<rootDir>/src/Shared/Events/*.{js,ts}",
],

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Query } from 'mongoose';

import MongoosePaginator from '../../../Shared/Infrastructure/Orm/MongoosePaginator';
import ITokenDocument from '../Schemas/ITokenDocument';
import ITokenMongooseDocument from '../Schemas/ITokenMongooseDocument';
import ITokenDomain from '../../Domain/Entities/ITokenDomain';

import BaseMongooseRepository from '../../../Shared/Infrastructure/Repositories/BaseMongooseRepository';
Expand All @@ -10,7 +10,7 @@ import ITokenRepository from './ITokenRepository';
import ICriteria from '../../../Shared/Presentation/Requests/ICriteria';
import IPaginator from '../../../Shared/Infrastructure/Orm/IPaginator';

class TokenMongooseRepository extends BaseMongooseRepository<ITokenDomain, ITokenDocument> implements ITokenRepository<ITokenDomain>
class TokenMongooseRepository extends BaseMongooseRepository<ITokenDomain, ITokenMongooseDocument> implements ITokenRepository<ITokenDomain>
{
constructor()
{
Expand All @@ -19,7 +19,7 @@ class TokenMongooseRepository extends BaseMongooseRepository<ITokenDomain, IToke

async list(criteria: ICriteria): Promise<IPaginator>
{
const queryBuilder: Query<ITokenDocument[], ITokenDocument> = this.repository.find();
const queryBuilder: Query<ITokenMongooseDocument[], ITokenMongooseDocument> = this.repository.find();

return new MongoosePaginator(queryBuilder, criteria);
}
Expand Down
6 changes: 0 additions & 6 deletions src/Auth/Infrastructure/Schemas/ITokenDocument.ts

This file was deleted.

6 changes: 6 additions & 0 deletions src/Auth/Infrastructure/Schemas/ITokenMongooseDocument.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { Document } from 'mongoose';
import ITokenDomain from '../../Domain/Entities/ITokenDomain';

interface ITokenMongooseDocument extends Document, ITokenDomain {}

export default ITokenMongooseDocument;
5 changes: 5 additions & 0 deletions src/Config/MainConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ type MongooseConfig = {
database: string;
username: string;
password: string;
driver: string;
ssl: boolean;
sslValidate: boolean;
sslCA: string | null;
replicaSet: string | null;
};

type MikroORMConfig = {
Expand Down
9 changes: 8 additions & 1 deletion src/Config/validateEnv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,15 @@ export function validateEnv()
DB_DATABASE: str(),
DB_PASSWORD: str(),
DB_PORT: port(),
DB_DRIVER: str(),
SSL: bool(),
SSL_VALIDATE: bool(),
SSL_CA: str(),
REPLICA_SET: str(),
DB_ORM_DEFAULT: str(),

DB_SYNCHRONIZE: bool(),
DB_TYPE_DEFAULT: str(),
DB_TYPE: str(),

MINIO_HOST: str(),
MINIO_ACCESS_KEY: str(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import IFileRepository from './IFileRepository';

import FileFilter from '../../Presentation/Criterias/FileFilter';
import MongoosePaginator from '../../../Shared/Infrastructure/Orm/MongoosePaginator';
import IFile from '../Schemas/IFileDocument';
import IFile from '../Schemas/FileMongooseDocument';
import IFileDomain from '../../Domain/Entities/IFileDomain';

import BaseMongooseRepository from '../../../Shared/Infrastructure/Repositories/BaseMongooseRepository';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Document } from 'mongoose';
import IFileDomain from '../../Domain/Entities/IFileDomain';

interface IFileDocument extends Document, IFileDomain {}
type FileMongooseDocument = Document & IFileDomain;

export default IFileDocument;
export default FileMongooseDocument;
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import IPaginator from '../../../Shared/Infrastructure/Orm/IPaginator';
import IItemRepository from './IItemRepository';
import ItemFilter from '../../Presentation/Criterias/ItemFilter';
import MongoosePaginator from '../../../Shared/Infrastructure/Orm/MongoosePaginator';
import IItem from '../Schemas/IItemDocument';
import IItem from '../Schemas/ItemMongooseDocument';

import BaseMongooseRepository from '../../../Shared/Infrastructure/Repositories/BaseMongooseRepository';
import IItemDomain from '../../Domain/Entities/IItemDomain';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Document } from 'mongoose';
import IItemDomain from '../../Domain/Entities/IItemDomain';

interface IItemDocument extends Document, IItemDomain {}
type ItemMongooseDocument = Document & IItemDomain

export default IItemDocument;
export default ItemMongooseDocument;
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import IPaginator from '../../../Shared/Infrastructure/Orm/IPaginator';
import INotificationRepository from './INotificationRepository';

import MongoosePaginator from '../../../Shared/Infrastructure/Orm/MongoosePaginator';
import INotification from '../Schemas/INotificationDocument';
import { connection } from '../../../Shared/Infrastructure/Database/MongooseCreateConnection';
import INotification from '../Schemas/NotificationMongooseDocument';
import { connection } from '../../../Shared/Infrastructure/Database/CreateMongooseConnection';
import INotificationDomain from '../../Domain/Entities/INotificationDomain';
import EmailNotification from '../../Domain/Entities/EmailNotification';
import PushNotification from '../../Domain/Entities/PushNotification';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Document } from 'mongoose';
import INotificationDomain from '../../Domain/Entities/INotificationDomain';

interface INotificationDocument extends Document, INotificationDomain {}
type NotificationMongooseDocument = Document & INotificationDomain

export default INotificationDocument;
export default NotificationMongooseDocument;
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import IPaginator from '../../../Shared/Infrastructure/Orm/IPaginator';
import MongoosePaginator from '../../../Shared/Infrastructure/Orm/MongoosePaginator';
import RoleFilter from '../../Presentation/Criterias/RoleFilter';
import { Query } from 'mongoose';
import IRole from '../Schemas/IRoleDocument';
import IRole from '../Schemas/RoleMongooseDocument';
import IRoleDomain from '../../Domain/Entities/IRoleDomain';

import Roles from '../../../Config/Roles';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Document } from 'mongoose';
import IRoleDomain from '../../Domain/Entities/IRoleDomain';

interface IRoleDocument extends Document, IRoleDomain {}
type RoleMongooseDocument = Document & IRoleDomain;

export default IRoleDocument;
export default RoleMongooseDocument;
2 changes: 1 addition & 1 deletion src/Shared/Application/Http/AppExpress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import IApp from './IApp';
import IAppConfig from './IAppConfig';
import MainConfig from '../../../Config/MainConfig';
import { RequestContext } from '@mikro-orm/core';
import { orm } from '../../Infrastructure/Database/MikroORMCreateConnection';
import { orm } from '../../Infrastructure/Database/CreateMikroORMConnection';
import LoggerExpressMiddleware from '../../Presentation/Middlewares/LoggerExpressMiddleware';
import { createRequestContext, getRequestContext } from '../../Presentation/Shared/RequestContext';
import Logger from '../Logger/Logger';
Expand Down
2 changes: 1 addition & 1 deletion src/Shared/Application/Http/AppKoa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import WhiteListKoaHandler from '../../Tests/WhiteListKoaHandler';
import { ErrorKoaHandler } from './ErrorKoaHandler';
import MainConfig from '../../../Config/MainConfig';
import { RequestContext } from '@mikro-orm/core';
import { orm } from '../../Infrastructure/Database/MikroORMCreateConnection';
import { orm } from '../../Infrastructure/Database/CreateMikroORMConnection';
import LoggerKoaMiddleware from '../../Presentation/Middlewares/LoggerKoaMiddleware';
import container from '../../../register';
import { createRequestContext, getRequestContext } from '../../Presentation/Shared/RequestContext';
Expand Down
12 changes: 6 additions & 6 deletions src/Shared/Factories/DatabaseFactory.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import MainConfig from '../../Config/MainConfig';
import TypeORMCreateConnection from '../Infrastructure/Database/TypeORMCreateConnection';
import MongooseCreateConnection from '../Infrastructure/Database/MongooseCreateConnection';
import MikroORMCreateConnection from '../Infrastructure/Database/MikroORMCreateConnection';
import CreateTypeORMConnection from '../Infrastructure/Database/CreateTypeORMConnection';
import CreateMongooseConnection from '../Infrastructure/Database/CreateMongooseConnection';
import CreateMikroORMConnection from '../Infrastructure/Database/CreateMikroORMConnection';
import ICreateConnection from '../Infrastructure/Database/ICreateConnection';

class DatabaseFactory
Expand All @@ -26,9 +26,9 @@ class DatabaseFactory
const config = dbConfig[this.dbDefault];

const createConnections: Record<string, any> = {
TypeORM: TypeORMCreateConnection,
Mongoose: MongooseCreateConnection,
MikroORM: MikroORMCreateConnection
TypeORM: CreateTypeORMConnection,
Mongoose: CreateMongooseConnection,
MikroORM: CreateMikroORMConnection
};

return new createConnections[this.dbDefault](config);
Expand Down
Loading

0 comments on commit d8edb93

Please sign in to comment.