From c1c75fa2605bceae2f6f5d452bec6afa26830820 Mon Sep 17 00:00:00 2001 From: Sebastien Castiel Date: Fri, 25 Oct 2024 15:02:31 -0400 Subject: [PATCH] Q: Why do mountain climbers rope themselves together? A: To prevent the sensible ones from going home. --- package.json | 1 - src/index.ts | 2 +- src/lib/api.ts | 4 ++-- src/lib/balances.ts | 9 +++++--- src/lib/prisma.ts | 2 +- src/lib/totals.ts | 7 ++++--- src/trpc/query-client.ts | 21 ------------------- src/trpc/routers/_app.ts | 3 +-- src/trpc/routers/categories/index.ts | 4 ++-- src/trpc/routers/categories/list.procedure.ts | 4 ++-- src/trpc/routers/groups/activities/index.ts | 4 ++-- .../groups/activities/list.procedure.ts | 4 ++-- src/trpc/routers/groups/balances/index.ts | 4 ++-- .../routers/groups/balances/list.procedure.ts | 8 +++---- src/trpc/routers/groups/create.procedure.ts | 6 +++--- .../groups/expenses/create.procedure.ts | 6 +++--- .../groups/expenses/delete.procedure.ts | 4 ++-- .../routers/groups/expenses/get.procedure.ts | 4 ++-- src/trpc/routers/groups/expenses/index.ts | 12 +++++------ .../routers/groups/expenses/list.procedure.ts | 4 ++-- .../groups/expenses/update.procedure.ts | 6 +++--- src/trpc/routers/groups/get.procedure.ts | 4 ++-- .../routers/groups/getDetails.procedure.ts | 4 ++-- src/trpc/routers/groups/index.ts | 16 +++++++------- src/trpc/routers/groups/list.procedure.ts | 4 ++-- .../routers/groups/stats/get.procedure.ts | 8 +++---- src/trpc/routers/groups/stats/index.ts | 4 ++-- src/trpc/routers/groups/update.procedure.ts | 6 +++--- tsconfig.json | 4 ---- 29 files changed, 73 insertions(+), 96 deletions(-) delete mode 100644 src/trpc/query-client.ts diff --git a/package.json b/package.json index 72bcf0b..8d1d2e5 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "check-formatting": "prettier -c src", "prettier": "prettier -w src", "postinstall": "prisma generate", - "build": "tsc" }, "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", diff --git a/src/index.ts b/src/index.ts index 092b7ee..f167f22 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,4 +2,4 @@ export { appRouter, type AppRouter, type AppRouterOutput, -} from '@/trpc/routers/_app' +} from './trpc/routers/_app' diff --git a/src/lib/api.ts b/src/lib/api.ts index d4b467a..53d1db0 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -1,7 +1,7 @@ -import { prisma } from '@/lib/prisma' -import { ExpenseFormValues, GroupFormValues } from '@/lib/schemas' import { ActivityType, Expense } from '@prisma/client' import { nanoid } from 'nanoid' +import { prisma } from './prisma' +import { ExpenseFormValues, GroupFormValues } from './schemas' export function randomId() { return nanoid() diff --git a/src/lib/balances.ts b/src/lib/balances.ts index 70fea3f..0dcd031 100644 --- a/src/lib/balances.ts +++ b/src/lib/balances.ts @@ -1,6 +1,6 @@ -import { getGroupExpenses } from '@/lib/api' import { Participant } from '@prisma/client' import { match } from 'ts-pattern' +import { getGroupExpenses } from './api' export type Balances = Record< Participant['id'], @@ -87,7 +87,10 @@ export function getPublicBalances(reimbursements: Reimbursement[]): Balances { * This ensures that a participant executing a suggested reimbursement * does not result in completely new repayment suggestions. */ -function compareBalancesForReimbursements(b1: any, b2: any): number { +function compareBalancesForReimbursements( + b1: { total: number; participantId: string }, + b2: { total: number; participantId: string }, +): number { // positive balances come before negative balances if (b1.total > 0 && 0 > b2.total) { return -1 @@ -95,7 +98,7 @@ function compareBalancesForReimbursements(b1: any, b2: any): number { return 1 } // if signs match, sort based on userid - return b1.participantId < b2.participantId ? -1 : 1 + return b1.participantId.localeCompare(b2.participantId) } export function getSuggestedReimbursements( diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index 9c965fb..961d48b 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -2,7 +2,7 @@ import { PrismaClient } from '@prisma/client' declare const global: Global & { prisma?: PrismaClient } -export let p: PrismaClient = undefined as any as PrismaClient +export let p: PrismaClient = undefined as unknown as PrismaClient if (typeof window === 'undefined') { // await delay(1000) diff --git a/src/lib/totals.ts b/src/lib/totals.ts index 196ef3d..e0af5dc 100644 --- a/src/lib/totals.ts +++ b/src/lib/totals.ts @@ -1,4 +1,4 @@ -import { getGroupExpenses } from '@/lib/api' +import { getGroupExpenses } from './api' export function getTotalGroupSpending( expenses: NonNullable>>, @@ -55,14 +55,15 @@ export function getTotalActiveUserShare( // Calculate the user's share based on their percentage of the total expense total += (expense.amount * userPaidFor.shares) / 10000 // Assuming shares are out of 10000 for percentage break - case 'BY_SHARES': - // Calculate the user's share based on their shares relative to the total shares + case 'BY_SHARES': // Calculate the user's share based on their shares relative to the total shares + { const totalShares = paidFors.reduce( (sum, paidFor) => sum + paidFor.shares, 0, ) total += (expense.amount * userPaidFor.shares) / totalShares break + } } }) diff --git a/src/trpc/query-client.ts b/src/trpc/query-client.ts deleted file mode 100644 index 20774c1..0000000 --- a/src/trpc/query-client.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defaultShouldDehydrateQuery, QueryClient } from '@tanstack/react-query' -import superjson from 'superjson' - -export function makeQueryClient() { - return new QueryClient({ - defaultOptions: { - queries: { - staleTime: 30 * 1000, - }, - dehydrate: { - serializeData: superjson.serialize, - shouldDehydrateQuery: (query) => - defaultShouldDehydrateQuery(query) || - query.state.status === 'pending', - }, - hydrate: { - deserializeData: superjson.deserialize, - }, - }, - }) -} diff --git a/src/trpc/routers/_app.ts b/src/trpc/routers/_app.ts index 6d0aa83..f2e2173 100644 --- a/src/trpc/routers/_app.ts +++ b/src/trpc/routers/_app.ts @@ -1,7 +1,6 @@ -import { categoriesRouter } from '@/trpc/routers/categories' -import { groupsRouter } from '@/trpc/routers/groups' import { inferRouterOutputs } from '@trpc/server' import { createTRPCRouter } from '../init' +import { categoriesRouter } from './categories' export const appRouter = createTRPCRouter({ groups: groupsRouter, diff --git a/src/trpc/routers/categories/index.ts b/src/trpc/routers/categories/index.ts index 9e10a81..b9650c9 100644 --- a/src/trpc/routers/categories/index.ts +++ b/src/trpc/routers/categories/index.ts @@ -1,5 +1,5 @@ -import { createTRPCRouter } from '@/trpc/init' -import { listCategoriesProcedure } from '@/trpc/routers/categories/list.procedure' +import { createTRPCRouter } from '../../init' +import { listCategoriesProcedure } from './list.procedure' export const categoriesRouter = createTRPCRouter({ list: listCategoriesProcedure, diff --git a/src/trpc/routers/categories/list.procedure.ts b/src/trpc/routers/categories/list.procedure.ts index 826e6f4..b2ce9bb 100644 --- a/src/trpc/routers/categories/list.procedure.ts +++ b/src/trpc/routers/categories/list.procedure.ts @@ -1,5 +1,5 @@ -import { getCategories } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' +import { getCategories } from '../../../lib/api' +import { baseProcedure } from '../../init' export const listCategoriesProcedure = baseProcedure.query(async () => { return { categories: await getCategories() } diff --git a/src/trpc/routers/groups/activities/index.ts b/src/trpc/routers/groups/activities/index.ts index 5535600..5f0b2ab 100644 --- a/src/trpc/routers/groups/activities/index.ts +++ b/src/trpc/routers/groups/activities/index.ts @@ -1,5 +1,5 @@ -import { createTRPCRouter } from '@/trpc/init' -import { listGroupActivitiesProcedure } from '@/trpc/routers/groups/activities/list.procedure' +import { createTRPCRouter } from '../../../init' +import { listGroupActivitiesProcedure } from './list.procedure' export const activitiesRouter = createTRPCRouter({ list: listGroupActivitiesProcedure, diff --git a/src/trpc/routers/groups/activities/list.procedure.ts b/src/trpc/routers/groups/activities/list.procedure.ts index 7669d2d..2979bd8 100644 --- a/src/trpc/routers/groups/activities/list.procedure.ts +++ b/src/trpc/routers/groups/activities/list.procedure.ts @@ -1,6 +1,6 @@ -import { getActivities } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { getActivities } from '../../../../lib/api' +import { baseProcedure } from '../../../init' export const listGroupActivitiesProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/balances/index.ts b/src/trpc/routers/groups/balances/index.ts index 626ed64..bed18d3 100644 --- a/src/trpc/routers/groups/balances/index.ts +++ b/src/trpc/routers/groups/balances/index.ts @@ -1,5 +1,5 @@ -import { createTRPCRouter } from '@/trpc/init' -import { listGroupBalancesProcedure } from '@/trpc/routers/groups/balances/list.procedure' +import { createTRPCRouter } from '../../../init' +import { listGroupBalancesProcedure } from './list.procedure' export const groupBalancesRouter = createTRPCRouter({ list: listGroupBalancesProcedure, diff --git a/src/trpc/routers/groups/balances/list.procedure.ts b/src/trpc/routers/groups/balances/list.procedure.ts index b851a1a..5cf1a06 100644 --- a/src/trpc/routers/groups/balances/list.procedure.ts +++ b/src/trpc/routers/groups/balances/list.procedure.ts @@ -1,11 +1,11 @@ -import { getGroupExpenses } from '@/lib/api' +import { z } from 'zod' +import { getGroupExpenses } from '../../../../lib/api' import { getBalances, getPublicBalances, getSuggestedReimbursements, -} from '@/lib/balances' -import { baseProcedure } from '@/trpc/init' -import { z } from 'zod' +} from '../../../../lib/balances' +import { baseProcedure } from '../../../init' export const listGroupBalancesProcedure = baseProcedure .input(z.object({ groupId: z.string().min(1) })) diff --git a/src/trpc/routers/groups/create.procedure.ts b/src/trpc/routers/groups/create.procedure.ts index 9cf31a4..da6e6c9 100644 --- a/src/trpc/routers/groups/create.procedure.ts +++ b/src/trpc/routers/groups/create.procedure.ts @@ -1,7 +1,7 @@ -import { createGroup } from '@/lib/api' -import { groupFormSchema } from '@/lib/schemas' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { createGroup } from '../../../lib/api' +import { groupFormSchema } from '../../../lib/schemas' +import { baseProcedure } from '../../init' export const createGroupProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/expenses/create.procedure.ts b/src/trpc/routers/groups/expenses/create.procedure.ts index 1b84ad4..66198ab 100644 --- a/src/trpc/routers/groups/expenses/create.procedure.ts +++ b/src/trpc/routers/groups/expenses/create.procedure.ts @@ -1,7 +1,7 @@ -import { createExpense } from '@/lib/api' -import { expenseFormSchema } from '@/lib/schemas' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { createExpense } from '../../../../lib/api' +import { expenseFormSchema } from '../../../../lib/schemas' +import { baseProcedure } from '../../../init' export const createGroupExpenseProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/expenses/delete.procedure.ts b/src/trpc/routers/groups/expenses/delete.procedure.ts index 9969cc5..b833786 100644 --- a/src/trpc/routers/groups/expenses/delete.procedure.ts +++ b/src/trpc/routers/groups/expenses/delete.procedure.ts @@ -1,6 +1,6 @@ -import { deleteExpense } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { deleteExpense } from '../../../../lib/api' +import { baseProcedure } from '../../../init' export const deleteGroupExpenseProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/expenses/get.procedure.ts b/src/trpc/routers/groups/expenses/get.procedure.ts index 4dc3b53..b204b0a 100644 --- a/src/trpc/routers/groups/expenses/get.procedure.ts +++ b/src/trpc/routers/groups/expenses/get.procedure.ts @@ -1,7 +1,7 @@ -import { getExpense } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { TRPCError } from '@trpc/server' import { z } from 'zod' +import { getExpense } from '../../../../lib/api' +import { baseProcedure } from '../../../init' export const getGroupExpenseProcedure = baseProcedure .input(z.object({ groupId: z.string().min(1), expenseId: z.string().min(1) })) diff --git a/src/trpc/routers/groups/expenses/index.ts b/src/trpc/routers/groups/expenses/index.ts index 7f7cb54..903e7f7 100644 --- a/src/trpc/routers/groups/expenses/index.ts +++ b/src/trpc/routers/groups/expenses/index.ts @@ -1,9 +1,9 @@ -import { createTRPCRouter } from '@/trpc/init' -import { createGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/create.procedure' -import { deleteGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/delete.procedure' -import { getGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/get.procedure' -import { listGroupExpensesProcedure } from '@/trpc/routers/groups/expenses/list.procedure' -import { updateGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/update.procedure' +import { createTRPCRouter } from '../../../init' +import { createGroupExpenseProcedure } from './create.procedure' +import { deleteGroupExpenseProcedure } from './delete.procedure' +import { getGroupExpenseProcedure } from './get.procedure' +import { listGroupExpensesProcedure } from './list.procedure' +import { updateGroupExpenseProcedure } from './update.procedure' export const groupExpensesRouter = createTRPCRouter({ list: listGroupExpensesProcedure, diff --git a/src/trpc/routers/groups/expenses/list.procedure.ts b/src/trpc/routers/groups/expenses/list.procedure.ts index d2f5dbf..4b7aeda 100644 --- a/src/trpc/routers/groups/expenses/list.procedure.ts +++ b/src/trpc/routers/groups/expenses/list.procedure.ts @@ -1,6 +1,6 @@ -import { getGroupExpenses } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { getGroupExpenses } from '../../../../lib/api' +import { baseProcedure } from '../../../init' export const listGroupExpensesProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/expenses/update.procedure.ts b/src/trpc/routers/groups/expenses/update.procedure.ts index b7f9cc2..0e72722 100644 --- a/src/trpc/routers/groups/expenses/update.procedure.ts +++ b/src/trpc/routers/groups/expenses/update.procedure.ts @@ -1,7 +1,7 @@ -import { updateExpense } from '@/lib/api' -import { expenseFormSchema } from '@/lib/schemas' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { updateExpense } from '../../../../lib/api' +import { expenseFormSchema } from '../../../../lib/schemas' +import { baseProcedure } from '../../../init' export const updateGroupExpenseProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/get.procedure.ts b/src/trpc/routers/groups/get.procedure.ts index 331a6fc..75556bd 100644 --- a/src/trpc/routers/groups/get.procedure.ts +++ b/src/trpc/routers/groups/get.procedure.ts @@ -1,6 +1,6 @@ -import { getGroup } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { getGroup } from '../../../lib/api' +import { baseProcedure } from '../../init' export const getGroupProcedure = baseProcedure .input(z.object({ groupId: z.string().min(1) })) diff --git a/src/trpc/routers/groups/getDetails.procedure.ts b/src/trpc/routers/groups/getDetails.procedure.ts index 831b6a8..a2813d7 100644 --- a/src/trpc/routers/groups/getDetails.procedure.ts +++ b/src/trpc/routers/groups/getDetails.procedure.ts @@ -1,7 +1,7 @@ -import { getGroup, getGroupExpensesParticipants } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { TRPCError } from '@trpc/server' import { z } from 'zod' +import { getGroup, getGroupExpensesParticipants } from '../../../lib/api' +import { baseProcedure } from '../../init' export const getGroupDetailsProcedure = baseProcedure .input(z.object({ groupId: z.string().min(1) })) diff --git a/src/trpc/routers/groups/index.ts b/src/trpc/routers/groups/index.ts index 1322288..353b3c2 100644 --- a/src/trpc/routers/groups/index.ts +++ b/src/trpc/routers/groups/index.ts @@ -1,13 +1,13 @@ -import { createTRPCRouter } from '@/trpc/init' -import { activitiesRouter } from '@/trpc/routers/groups/activities' -import { groupBalancesRouter } from '@/trpc/routers/groups/balances' -import { createGroupProcedure } from '@/trpc/routers/groups/create.procedure' -import { groupExpensesRouter } from '@/trpc/routers/groups/expenses' -import { getGroupProcedure } from '@/trpc/routers/groups/get.procedure' -import { groupStatsRouter } from '@/trpc/routers/groups/stats' -import { updateGroupProcedure } from '@/trpc/routers/groups/update.procedure' +import { createTRPCRouter } from '../../init' +import { activitiesRouter } from './activities' +import { groupBalancesRouter } from './balances' +import { createGroupProcedure } from './create.procedure' +import { groupExpensesRouter } from './expenses' +import { getGroupProcedure } from './get.procedure' import { getGroupDetailsProcedure } from './getDetails.procedure' import { listGroupsProcedure } from './list.procedure' +import { groupStatsRouter } from './stats' +import { updateGroupProcedure } from './update.procedure' export const groupsRouter = createTRPCRouter({ expenses: groupExpensesRouter, diff --git a/src/trpc/routers/groups/list.procedure.ts b/src/trpc/routers/groups/list.procedure.ts index 557288a..e5724ae 100644 --- a/src/trpc/routers/groups/list.procedure.ts +++ b/src/trpc/routers/groups/list.procedure.ts @@ -1,6 +1,6 @@ -import { getGroups } from '@/lib/api' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { getGroups } from '../../../lib/api' +import { baseProcedure } from '../../init' export const listGroupsProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/stats/get.procedure.ts b/src/trpc/routers/groups/stats/get.procedure.ts index 2745de9..14974cb 100644 --- a/src/trpc/routers/groups/stats/get.procedure.ts +++ b/src/trpc/routers/groups/stats/get.procedure.ts @@ -1,11 +1,11 @@ -import { getGroupExpenses } from '@/lib/api' +import { z } from 'zod' +import { getGroupExpenses } from '../../../../lib/api' import { getTotalActiveUserPaidFor, getTotalActiveUserShare, getTotalGroupSpending, -} from '@/lib/totals' -import { baseProcedure } from '@/trpc/init' -import { z } from 'zod' +} from '../../../../lib/totals' +import { baseProcedure } from '../../../init' export const getGroupStatsProcedure = baseProcedure .input( diff --git a/src/trpc/routers/groups/stats/index.ts b/src/trpc/routers/groups/stats/index.ts index 831dc9a..3b51df7 100644 --- a/src/trpc/routers/groups/stats/index.ts +++ b/src/trpc/routers/groups/stats/index.ts @@ -1,5 +1,5 @@ -import { createTRPCRouter } from '@/trpc/init' -import { getGroupStatsProcedure } from '@/trpc/routers/groups/stats/get.procedure' +import { createTRPCRouter } from '../../../init' +import { getGroupStatsProcedure } from './get.procedure' export const groupStatsRouter = createTRPCRouter({ get: getGroupStatsProcedure, diff --git a/src/trpc/routers/groups/update.procedure.ts b/src/trpc/routers/groups/update.procedure.ts index a9e3666..c7dc489 100644 --- a/src/trpc/routers/groups/update.procedure.ts +++ b/src/trpc/routers/groups/update.procedure.ts @@ -1,7 +1,7 @@ -import { updateGroup } from '@/lib/api' -import { groupFormSchema } from '@/lib/schemas' -import { baseProcedure } from '@/trpc/init' import { z } from 'zod' +import { updateGroup } from '../../../lib/api' +import { groupFormSchema } from '../../../lib/schemas' +import { baseProcedure } from '../../init' export const updateGroupProcedure = baseProcedure .input( diff --git a/tsconfig.json b/tsconfig.json index 82df0e6..f12ba1d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,10 +12,6 @@ "isolatedModules": true, "jsx": "preserve", "incremental": true, - "paths": { - "@/*": ["./src/*"] - }, - "outDir": "./dist", "declaration": true }, "include": ["./src/index.ts", "./reset.d.ts"],