Skip to content

Commit

Permalink
add: session_manager
Browse files Browse the repository at this point in the history
  • Loading branch information
benchambule committed Aug 25, 2024
1 parent 16dba0d commit 0fa8120
Showing 1 changed file with 72 additions and 1 deletion.
73 changes: 72 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ export {
input_processor,
form_processor,

format_message
format_message,

InMemorySessionManager,

process_w_session
}

/**
Expand Down Expand Up @@ -674,4 +678,71 @@ function format_message(message, parameters){
}

return result;
}


class InMemorySessionManager {
#sessions = new Map();

/**
*
* @param {string} identifier
* @returns {object}
*/
get_session(identifier){
return this.#sessions.get(identifier);
}

/**
*
* @param {string} identifier
* @param {string} message
* @param {object} parameters
*/
save_session(identifier, message, parameters){
this.#sessions.set(identifier, {message: message, parameters: parameters});
}

/**
*
* @param {identifier} identifier
*/
close(identifier){
this.#sessions.delete(identifier);
}

get sessions(){
return this.#sessions;
}
}


/**
*
* @param {__lottus} bot
* @param {InMemorySessionManager} session_manager
* @param {string} identifier
* @param {object} request
* @returns {object}
*/
async function process_w_session(bot, session_manager, identifier, request){
let session = session_manager.get_session(identifier);

if(!session){
session = {message: null, parameters: null};
}

if(session.parameters){
request.parameters = {...request.parameters, ...session.parameters};
}

session.message = await bot.process(request, session.message);
session.parameters = {...session.parameters, ...session.message.parameters};
session_manager.save_session(identifier, session.message, session.parameters);

if(session.message.close){
session_manager.close(identifier);
}

return session;
}

0 comments on commit 0fa8120

Please sign in to comment.