index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import {
  2. ownerOrAdminOrNewHooks,
  3. onlySelfOrPublicGames,
  4. onlySelfUser,
  5. } from "./hooks.js";
  6. import getConfToken from "./getConfToken.js";
  7. const SESSION_DURATION = 60; // Session duration in days
  8. export const main = async ({ store, schedules, hooks, functions }) => {
  9. hooks.before = [ownerOrAdminOrNewHooks, onlySelfUser];
  10. hooks.after = [ownerOrAdminOrNewHooks, onlySelfOrPublicGames];
  11. hooks.beforeFile = [ownerOrAdminOrNewHooks];
  12. functions.getConfToken = getConfToken;
  13. // Declare stores
  14. await store.createOrUpdateBox("game", { security: "readOnly" });
  15. await store.createOrUpdateBox("room", { security: "public" });
  16. await store.createOrUpdateBox("session", { security: "public" });
  17. await store.createOrUpdateBox("user", { security: "private" });
  18. // Add schedules
  19. schedules["daily"] = [
  20. async () => {
  21. const sessions = await store.list("session", { limit: 10000 });
  22. sessions.forEach(async (session) => {
  23. const now = Date.now();
  24. if (!session.timestamp) {
  25. console.log("Delete session without timestamp ", session._id);
  26. await store.delete("session", session._id);
  27. }
  28. if (now - session.timestamp > SESSION_DURATION * 24 * 60 * 60 * 1000) {
  29. console.log("Delete too old session ", session._id);
  30. await store.delete("session", session._id);
  31. }
  32. });
  33. },
  34. ];
  35. //await replaceImageUrl({ store });
  36. console.log("Setup loaded with session");
  37. };
  38. export default main;