mirror of
https://github.com/spliit-app/spliit.git
synced 2026-02-24 08:26:13 +01:00
* Use tRPC in group edition + group layout * Use tRPC in group modals * Use tRPC in group stats * Use tRPC in group activity
36 lines
985 B
TypeScript
36 lines
985 B
TypeScript
import { getGroupExpenses } from '@/lib/api'
|
|
import {
|
|
getTotalActiveUserPaidFor,
|
|
getTotalActiveUserShare,
|
|
getTotalGroupSpending,
|
|
} from '@/lib/totals'
|
|
import { baseProcedure } from '@/trpc/init'
|
|
import { z } from 'zod'
|
|
|
|
export const getGroupStatsProcedure = baseProcedure
|
|
.input(
|
|
z.object({
|
|
groupId: z.string().min(1),
|
|
participantId: z.string().optional(),
|
|
}),
|
|
)
|
|
.query(async ({ input: { groupId, participantId } }) => {
|
|
const expenses = await getGroupExpenses(groupId)
|
|
const totalGroupSpendings = getTotalGroupSpending(expenses)
|
|
|
|
const totalParticipantSpendings =
|
|
participantId !== undefined
|
|
? getTotalActiveUserPaidFor(participantId, expenses)
|
|
: undefined
|
|
const totalParticipantShare =
|
|
participantId !== undefined
|
|
? getTotalActiveUserShare(participantId, expenses)
|
|
: undefined
|
|
|
|
return {
|
|
totalGroupSpendings,
|
|
totalParticipantSpendings,
|
|
totalParticipantShare,
|
|
}
|
|
})
|