Skip to content

Commit 4c7752c

Browse files
committed
Mongo DB persistence added
1 parent c3a1869 commit 4c7752c

16 files changed

Lines changed: 143 additions & 42 deletions

File tree

‎back/.env‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
NODE_ENV=development
22
PORT=8081
3+
SOCKET_PORT=3000
4+
MOCK_REPOSITORY=false
5+
API_URL=/api
6+
CORS_ORIGIN=http://localhost:8080
7+
MONGODB_URI=mongodb://localhost:27017/code-paster

‎back/package.json‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
"start:dev": "nodemon --exec babel-node --extensions \".ts\" src/index.ts",
99
"start:debug": "run-p -l type-check:watch \"start:dev -- --inspect-brk\"",
1010
"start:prod": "node ./dist/index.js",
11-
"start:mock-repository": "cross-env MOCK_REPOSITORY=true npm run start",
12-
"start:local-db": "docker-compose up || echo \"Run docker-compose up manually\"",
13-
"stop:local-db": "docker-compose down || echo \"Run docker-compose down manually\"",
11+
"start:mock": "cross-env MOCK_REPOSITORY=true npm run start",
12+
"start:localdb": "cross-env run-p -l start start:docker-db",
13+
"start:docker-db": "docker-compose up || echo \"Run docker-compose up manually\"",
14+
"stop:docker-db": "docker-compose down || echo \"Run docker-compose down manually\"",
1415
"build": "run-p -l type-check build:prod",
1516
"build:prod": "npm run clean && babel src -d dist --ignore=\"./src/test-runners\" --extensions \".ts\"",
1617
"build:dev": "npm run clean && babel src -d dist --ignore=\"./src/test-runners\" --extensions \".ts\" --source-maps",

‎back/src/app.ts‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createApp } from './express.server';
2-
import { envConstants } from './env.constants';
2+
import { envConstants } from 'core';
33
import { api } from './api';
44
import cors from 'cors';
55
import SocketIOClient, { Socket } from 'socket.io';
@@ -10,6 +10,7 @@ import {
1010
Action,
1111
SocketInfo,
1212
} from './messages';
13+
import { connectToDB } from 'core';
1314

1415
const app = createApp();
1516

@@ -35,10 +36,14 @@ const options: cors.CorsOptions = {
3536
};
3637

3738
app.use(cors(options));
38-
app.use('/api', api);
39+
app.use(envConstants.API_URL, api);
3940

40-
app.listen(envConstants.PORT, () => {
41-
console.log(`Server ready at http://localhost:${envConstants.PORT}/api`);
41+
app.listen(envConstants.PORT, async () => {
42+
if(!envConstants.isMockRepository && envConstants.MONGODB_URI) {
43+
await connectToDB(envConstants.MONGODB_URI);
44+
}
45+
console.log(`Using ${envConstants.isMockRepository ? 'Mock' : 'DataBase'} for session storage`)
46+
console.log(`Server ready at http://localhost:${envConstants.PORT}${envConstants.API_URL}`);
4247
});
4348

4449
// whenever a user connects on port 3000 via

‎back/src/core/db/index.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './database.connection';

‎back/src/core/index.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './constants'
2+
export * from './db'
3+
export * from './servers'

‎back/src/dals/room/index.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
export * from './room.model';
1+
export * from './room.model';
2+
export * from './room.context';

‎back/src/dals/room/room.context.ts‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Document, model, Schema } from 'mongoose';
2+
import { RoomInfo } from 'dals';
3+
4+
const roomSchema = new Schema({
5+
room: Schema.Types.String,
6+
content: Schema.Types.String
7+
});
8+
9+
export const RoomContext = model<RoomInfo & Document>(
10+
'RoomInfo',
11+
roomSchema
12+
);

‎back/src/dals/session/index.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from './repository';
22
export * from './session.model';
3+
export * from './session.context';

‎back/src/dals/session/repository/index.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { envConstants } from 'core/constants';
22
import * as mockRepository from './session.mock';
33
//TODO: change to session.db
4-
import * as repository from './session.mock';
4+
import * as repository from './session.repository';
55
import { SessionRepository } from './session.contract';
66

77
export const sessionRepository: SessionRepository = envConstants.isMockRepository

‎back/src/dals/session/repository/session.contract.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { RoomInfo } from 'dals/room';
22
import { ConnectSessionInfo } from 'dals/session';
3+
import { UserSession } from '../session.model';
34

45
export interface SessionRepository {
56
isTrainerUser: (connectionId: string) => Promise<boolean>;
67
saveRoomInfo: (newRoomInfo: RoomInfo, action: string) => Promise<void>;
78
isExistingConnection: (connectionId: string) => Promise<boolean>;
89
isRoomAvailable: (room: string) => Promise<boolean>;
9-
addNewUser: (connectionId: string, connectSession: ConnectSessionInfo) => Promise<void>;
10+
addNewUser: (userSession: UserSession) => Promise<void>;
1011
getRoomFromConnectionId: (connectionId: string) => Promise<string>;
1112
getRoomContent:(room: string) => Promise<string>;
1213
}

0 commit comments

Comments
 (0)