feat(bot): cut over multi-household member flows

This commit is contained in:
2026-03-09 06:14:57 +04:00
parent de86706f4f
commit 7c602900ee
20 changed files with 1068 additions and 163 deletions

View File

@@ -53,6 +53,12 @@ function createRepositoryStub() {
return households.get(telegramChatId) ?? null
},
async getHouseholdChatByHouseholdId(householdId) {
return (
[...households.values()].find((household) => household.householdId === householdId) ?? null
)
},
async bindHouseholdTopic(input) {
const next: HouseholdTopicBindingRecord = {
householdId: input.householdId,
@@ -156,6 +162,7 @@ function createRepositoryStub() {
const key = `${input.householdId}:${input.telegramUserId}`
const existing = members.get(key)
const next: HouseholdMemberRecord = {
id: existing?.id ?? `member-${input.telegramUserId}`,
householdId: input.householdId,
telegramUserId: input.telegramUserId,
displayName: input.displayName,
@@ -169,6 +176,10 @@ function createRepositoryStub() {
return members.get(`${householdId}:${telegramUserId}`) ?? null
},
async listHouseholdMembersByTelegramUserId(telegramUserId) {
return [...members.values()].filter((member) => member.telegramUserId === telegramUserId)
},
async listPendingHouseholdMembers(householdId) {
return [...pendingMembers.values()].filter((entry) => entry.householdId === householdId)
},
@@ -183,6 +194,7 @@ function createRepositoryStub() {
pendingMembers.delete(key)
const member: HouseholdMemberRecord = {
id: `member-${pending.telegramUserId}`,
householdId: pending.householdId,
telegramUserId: pending.telegramUserId,
displayName: pending.displayName,
@@ -220,6 +232,7 @@ describe('createHouseholdSetupService', () => {
expect(result.household.telegramChatId).toBe('-100123')
const admin = await repository.getHouseholdMember(result.household.householdId, '42')
expect(admin).toEqual({
id: 'member-42',
householdId: result.household.householdId,
telegramUserId: '42',
displayName: 'Stan',