|
|
import { RoomState } from "./types" |
|
|
|
|
|
|
|
|
const rooms = new Map<string, RoomState>() |
|
|
let userCount = 0 |
|
|
|
|
|
export const getRoom = async (roomId: string): Promise<RoomState | null> => { |
|
|
return rooms.get(roomId) ?? null |
|
|
} |
|
|
|
|
|
export const roomExists = async (roomId: string): Promise<number> => { |
|
|
|
|
|
return rooms.has(roomId) ? 1 : 0 |
|
|
} |
|
|
|
|
|
export const setRoom = async (roomId: string, data: RoomState): Promise<"OK"> => { |
|
|
rooms.set(roomId, data) |
|
|
return "OK" |
|
|
} |
|
|
|
|
|
export const deleteRoom = async (roomId: string): Promise<number> => { |
|
|
return rooms.delete(roomId) ? 1 : 0 |
|
|
} |
|
|
|
|
|
export const listRooms = async (): Promise<string[]> => { |
|
|
return Array.from(rooms.keys()) |
|
|
} |
|
|
|
|
|
export const countRooms = async (): Promise<number> => { |
|
|
return rooms.size |
|
|
} |
|
|
|
|
|
export const countUsers = async (): Promise<number> => { |
|
|
return userCount |
|
|
} |
|
|
|
|
|
export const incUsers = async (): Promise<number> => { |
|
|
userCount += 1 |
|
|
return userCount |
|
|
} |
|
|
|
|
|
export const decUsers = async (): Promise<number> => { |
|
|
userCount = Math.max(0, userCount - 1) |
|
|
return userCount |
|
|
} |
|
|
|
|
|
export const wipeCache = async (): Promise<"OK"> => { |
|
|
rooms.clear() |
|
|
userCount = 0 |
|
|
return "OK" |
|
|
} |