mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
|
|
|
||
|
|
const BaseRoomProvider = require('../roomsProviders/base-provider.js');
|
||
|
|
//const ClusterRoomProvider = require('../roomsProviders/cluster-provider.js');
|
||
|
|
const DockerRoomProvider = require('../roomsProviders/docker-provider.js');
|
||
|
|
//const KubernetesRoomProvider = require('../roomsProviders/kubernetes-provider');
|
||
|
|
|
||
|
|
class RoomsController {
|
||
|
|
constructor(options = {}, roomRepository) {
|
||
|
|
this.provider = this.createProvider(
|
||
|
|
options.provider || process.env.ROOM_PROVIDER || 'cluster',
|
||
|
|
options.providerOptions,
|
||
|
|
roomRepository
|
||
|
|
);
|
||
|
|
this.roomRepository = roomRepository;
|
||
|
|
this.setupCleanup();
|
||
|
|
}
|
||
|
|
|
||
|
|
createProvider(type, options, repository) {
|
||
|
|
switch (type) {
|
||
|
|
/*
|
||
|
|
case 'cluster':
|
||
|
|
return new ClusterRoomProvider(options, this.roomRepository);
|
||
|
|
*/
|
||
|
|
// Uncomment these as needed
|
||
|
|
case 'docker':
|
||
|
|
return new DockerRoomProvider(options, repository);
|
||
|
|
/*
|
||
|
|
case 'kubernetes':
|
||
|
|
return new KubernetesRoomProvider(options);
|
||
|
|
*/
|
||
|
|
default:
|
||
|
|
throw new Error(`Unknown provider type: ${type}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
setupCleanup() {
|
||
|
|
setInterval(() => {
|
||
|
|
this.provider.cleanup().catch(console.error);
|
||
|
|
}, 30000);
|
||
|
|
}
|
||
|
|
|
||
|
|
async createRoom(options = {}) {
|
||
|
|
const roomId = options.roomId || this.generateRoomId();
|
||
|
|
return await this.provider.createRoom(roomId, options);
|
||
|
|
}
|
||
|
|
|
||
|
|
async deleteRoom(roomId) {
|
||
|
|
return await this.provider.deleteRoom(roomId);
|
||
|
|
}
|
||
|
|
|
||
|
|
async getRoomStatus(roomId) {
|
||
|
|
return await this.provider.getRoomStatus(roomId);
|
||
|
|
}
|
||
|
|
|
||
|
|
async listRooms() {
|
||
|
|
return await this.provider.listRooms();
|
||
|
|
}
|
||
|
|
|
||
|
|
generateRoomId() {
|
||
|
|
return Math.random().toString(36).substring(2, 7);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = RoomsController;
|