Files
clawdbot/extensions/msteams/src/polls-store-memory.ts
2026-01-16 02:59:43 +00:00

31 lines
937 B
TypeScript

import {
type MSTeamsPoll,
type MSTeamsPollStore,
normalizeMSTeamsPollSelections,
} from "./polls.js";
export function createMSTeamsPollStoreMemory(initial: MSTeamsPoll[] = []): MSTeamsPollStore {
const polls = new Map<string, MSTeamsPoll>();
for (const poll of initial) {
polls.set(poll.id, { ...poll });
}
const createPoll = async (poll: MSTeamsPoll) => {
polls.set(poll.id, { ...poll });
};
const getPoll = async (pollId: string) => polls.get(pollId) ?? null;
const recordVote = async (params: { pollId: string; voterId: string; selections: string[] }) => {
const poll = polls.get(params.pollId);
if (!poll) return null;
const normalized = normalizeMSTeamsPollSelections(poll, params.selections);
poll.votes[params.voterId] = normalized;
poll.updatedAt = new Date().toISOString();
polls.set(poll.id, poll);
return poll;
};
return { createPoll, getPoll, recordVote };
}