mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 13:54:02 +00:00
feat(bot): add configurable household assistant behavior
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
||||
HOUSEHOLD_MEMBER_LIFECYCLE_STATUSES,
|
||||
HOUSEHOLD_PAYMENT_BALANCE_ADJUSTMENT_POLICIES,
|
||||
HOUSEHOLD_TOPIC_ROLES,
|
||||
type HouseholdAssistantConfigRecord,
|
||||
type HouseholdMemberAbsencePolicy,
|
||||
type HouseholdMemberAbsencePolicyRecord,
|
||||
type HouseholdBillingSettingsRecord,
|
||||
@@ -245,6 +246,18 @@ function toHouseholdBillingSettingsRecord(row: {
|
||||
}
|
||||
}
|
||||
|
||||
function toHouseholdAssistantConfigRecord(row: {
|
||||
householdId: string
|
||||
assistantContext: string | null
|
||||
assistantTone: string | null
|
||||
}): HouseholdAssistantConfigRecord {
|
||||
return {
|
||||
householdId: row.householdId,
|
||||
assistantContext: row.assistantContext,
|
||||
assistantTone: row.assistantTone
|
||||
}
|
||||
}
|
||||
|
||||
function toHouseholdUtilityCategoryRecord(row: {
|
||||
id: string
|
||||
householdId: string
|
||||
@@ -957,6 +970,25 @@ export function createDbHouseholdConfigurationRepository(databaseUrl: string): {
|
||||
return toHouseholdBillingSettingsRecord(row)
|
||||
},
|
||||
|
||||
async getHouseholdAssistantConfig(householdId) {
|
||||
const rows = await db
|
||||
.select({
|
||||
householdId: schema.households.id,
|
||||
assistantContext: schema.households.assistantContext,
|
||||
assistantTone: schema.households.assistantTone
|
||||
})
|
||||
.from(schema.households)
|
||||
.where(eq(schema.households.id, householdId))
|
||||
.limit(1)
|
||||
|
||||
const row = rows[0]
|
||||
if (!row) {
|
||||
throw new Error('Failed to load household assistant config')
|
||||
}
|
||||
|
||||
return toHouseholdAssistantConfigRecord(row)
|
||||
},
|
||||
|
||||
async updateHouseholdBillingSettings(input) {
|
||||
await ensureBillingSettings(input.householdId)
|
||||
|
||||
@@ -1033,6 +1065,36 @@ export function createDbHouseholdConfigurationRepository(databaseUrl: string): {
|
||||
return toHouseholdBillingSettingsRecord(row)
|
||||
},
|
||||
|
||||
async updateHouseholdAssistantConfig(input) {
|
||||
const rows = await db
|
||||
.update(schema.households)
|
||||
.set({
|
||||
...(input.assistantContext !== undefined
|
||||
? {
|
||||
assistantContext: input.assistantContext
|
||||
}
|
||||
: {}),
|
||||
...(input.assistantTone !== undefined
|
||||
? {
|
||||
assistantTone: input.assistantTone
|
||||
}
|
||||
: {})
|
||||
})
|
||||
.where(eq(schema.households.id, input.householdId))
|
||||
.returning({
|
||||
householdId: schema.households.id,
|
||||
assistantContext: schema.households.assistantContext,
|
||||
assistantTone: schema.households.assistantTone
|
||||
})
|
||||
|
||||
const row = rows[0]
|
||||
if (!row) {
|
||||
throw new Error('Failed to update household assistant config')
|
||||
}
|
||||
|
||||
return toHouseholdAssistantConfigRecord(row)
|
||||
},
|
||||
|
||||
async listHouseholdUtilityCategories(householdId) {
|
||||
await ensureUtilityCategories(householdId)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user