diff --git a/apps/api/index.ts b/apps/api/index.ts index 938a54c8..dd989a0d 100644 --- a/apps/api/index.ts +++ b/apps/api/index.ts @@ -1,5 +1,4 @@ import { Hono } from 'hono' - import { logger } from 'hono/logger' import { prettyJSON } from 'hono/pretty-json' import { trimTrailingSlash } from 'hono/trailing-slash' diff --git a/apps/api/lib/prisma.ts b/apps/api/lib/prisma.ts index 5c934b87..64411007 100644 --- a/apps/api/lib/prisma.ts +++ b/apps/api/lib/prisma.ts @@ -1,18 +1,20 @@ import { PrismaClient } from '@prisma/client' -// eslint-disable-next-line import/no-mutable-exports +// biome-ignore lint/style/useConst: let prisma: PrismaClient -if (process.env.NODE_ENV === 'production') { - prisma = new PrismaClient() -} else { - const globalWithPrisma = global as typeof globalThis & { - prisma: PrismaClient - } - if (!globalWithPrisma.prisma) { - globalWithPrisma.prisma = new PrismaClient() - } - prisma = globalWithPrisma.prisma -} +prisma = new PrismaClient() + +// if (process.env.NODE_ENV === 'production') { +// prisma = new PrismaClient() +// } else { +// const globalWithPrisma = global as typeof globalThis & { +// prisma: PrismaClient +// } +// if (!globalWithPrisma.prisma) { +// globalWithPrisma.prisma = new PrismaClient() +// } +// prisma = globalWithPrisma.prisma +// } export default prisma diff --git a/apps/api/prisma/generated/zod/index.ts b/apps/api/prisma/generated/zod/index.ts index c336a268..a77f4263 100644 --- a/apps/api/prisma/generated/zod/index.ts +++ b/apps/api/prisma/generated/zod/index.ts @@ -35,6 +35,8 @@ export const TransactionIsolationLevelSchema = z.enum(['ReadUncommitted','ReadCo export const UserScalarFieldEnumSchema = z.enum(['id','createdAt','updatedAt','email','name']); +export const RelationLoadStrategySchema = z.enum(['query','join']); + export const UserWalletAccountScalarFieldEnumSchema = z.enum(['id','createdAt','updatedAt','name','icon','description','lastDigits','preferredCurrency','userId']); export const BudgetScalarFieldEnumSchema = z.enum(['id','createdAt','updatedAt','name','description','preferredCurrency','type']); @@ -5880,6 +5882,7 @@ export const UserFindFirstArgsSchema: z.ZodType = z.ob take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ UserScalarFieldEnumSchema,UserScalarFieldEnumSchema.array() ]).optional(), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -5891,6 +5894,7 @@ export const UserFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -5902,6 +5906,7 @@ export const UserFindManyArgsSchema: z.ZodType = z.obje take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ UserScalarFieldEnumSchema,UserScalarFieldEnumSchema.array() ]).optional(), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserAggregateArgsSchema: z.ZodType = z.object({ @@ -5925,12 +5930,14 @@ export const UserFindUniqueArgsSchema: z.ZodType = z. select: UserSelectSchema.optional(), include: UserIncludeSchema.optional(), where: UserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ select: UserSelectSchema.optional(), include: UserIncludeSchema.optional(), where: UserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserWalletAccountFindFirstArgsSchema: z.ZodType = z.object({ @@ -5942,6 +5949,7 @@ export const UserWalletAccountFindFirstArgsSchema: z.ZodType = z.object({ @@ -5953,6 +5961,7 @@ export const UserWalletAccountFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -5964,6 +5973,7 @@ export const UserWalletAccountFindManyArgsSchema: z.ZodType = z.object({ @@ -5987,12 +5997,14 @@ export const UserWalletAccountFindUniqueArgsSchema: z.ZodType = z.object({ select: UserWalletAccountSelectSchema.optional(), include: UserWalletAccountIncludeSchema.optional(), where: UserWalletAccountWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetFindFirstArgsSchema: z.ZodType = z.object({ @@ -6004,6 +6016,7 @@ export const BudgetFindFirstArgsSchema: z.ZodType = take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ BudgetScalarFieldEnumSchema,BudgetScalarFieldEnumSchema.array() ]).optional(), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6015,6 +6028,7 @@ export const BudgetFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6026,6 +6040,7 @@ export const BudgetFindManyArgsSchema: z.ZodType = z. take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ BudgetScalarFieldEnumSchema,BudgetScalarFieldEnumSchema.array() ]).optional(), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetAggregateArgsSchema: z.ZodType = z.object({ @@ -6049,12 +6064,14 @@ export const BudgetFindUniqueArgsSchema: z.ZodType select: BudgetSelectSchema.optional(), include: BudgetIncludeSchema.optional(), where: BudgetWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ select: BudgetSelectSchema.optional(), include: BudgetIncludeSchema.optional(), where: BudgetWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetPeriodConfigFindFirstArgsSchema: z.ZodType = z.object({ @@ -6066,6 +6083,7 @@ export const BudgetPeriodConfigFindFirstArgsSchema: z.ZodType = z.object({ @@ -6077,6 +6095,7 @@ export const BudgetPeriodConfigFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6088,6 +6107,7 @@ export const BudgetPeriodConfigFindManyArgsSchema: z.ZodType = z.object({ @@ -6111,12 +6131,14 @@ export const BudgetPeriodConfigFindUniqueArgsSchema: z.ZodType = z.object({ select: BudgetPeriodConfigSelectSchema.optional(), include: BudgetPeriodConfigIncludeSchema.optional(), where: BudgetPeriodConfigWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserFindFirstArgsSchema: z.ZodType = z.object({ @@ -6128,6 +6150,7 @@ export const BudgetUserFindFirstArgsSchema: z.ZodType = z.object({ @@ -6139,6 +6162,7 @@ export const BudgetUserFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6150,6 +6174,7 @@ export const BudgetUserFindManyArgsSchema: z.ZodType = z.object({ @@ -6173,12 +6198,14 @@ export const BudgetUserFindUniqueArgsSchema: z.ZodType = z.object({ select: BudgetUserSelectSchema.optional(), include: BudgetUserIncludeSchema.optional(), where: BudgetUserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserInvitationFindFirstArgsSchema: z.ZodType = z.object({ @@ -6190,6 +6217,7 @@ export const BudgetUserInvitationFindFirstArgsSchema: z.ZodType = z.object({ @@ -6201,6 +6229,7 @@ export const BudgetUserInvitationFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6212,6 +6241,7 @@ export const BudgetUserInvitationFindManyArgsSchema: z.ZodType = z.object({ @@ -6235,12 +6265,14 @@ export const BudgetUserInvitationFindUniqueArgsSchema: z.ZodType = z.object({ select: BudgetUserInvitationSelectSchema.optional(), include: BudgetUserInvitationIncludeSchema.optional(), where: BudgetUserInvitationWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserInvitationResponseFindFirstArgsSchema: z.ZodType = z.object({ @@ -6252,6 +6284,7 @@ export const BudgetUserInvitationResponseFindFirstArgsSchema: z.ZodType = z.object({ @@ -6263,6 +6296,7 @@ export const BudgetUserInvitationResponseFindFirstOrThrowArgsSchema: z.ZodType

= z.object({ @@ -6274,6 +6308,7 @@ export const BudgetUserInvitationResponseFindManyArgsSchema: z.ZodType = z.object({ @@ -6297,12 +6332,14 @@ export const BudgetUserInvitationResponseFindUniqueArgsSchema: z.ZodType = z.object({ select: BudgetUserInvitationResponseSelectSchema.optional(), include: BudgetUserInvitationResponseIncludeSchema.optional(), where: BudgetUserInvitationResponseWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const TransactionFindFirstArgsSchema: z.ZodType = z.object({ @@ -6314,6 +6351,7 @@ export const TransactionFindFirstArgsSchema: z.ZodType = z.object({ @@ -6325,6 +6363,7 @@ export const TransactionFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6336,6 +6375,7 @@ export const TransactionFindManyArgsSchema: z.ZodType = z.object({ @@ -6359,12 +6399,14 @@ export const TransactionFindUniqueArgsSchema: z.ZodType = z.object({ select: TransactionSelectSchema.optional(), include: TransactionIncludeSchema.optional(), where: TransactionWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const CategoryFindFirstArgsSchema: z.ZodType = z.object({ @@ -6376,6 +6418,7 @@ export const CategoryFindFirstArgsSchema: z.ZodType = z.object({ @@ -6387,6 +6430,7 @@ export const CategoryFindFirstOrThrowArgsSchema: z.ZodType = z.object({ @@ -6398,6 +6442,7 @@ export const CategoryFindManyArgsSchema: z.ZodType take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ CategoryScalarFieldEnumSchema,CategoryScalarFieldEnumSchema.array() ]).optional(), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const CategoryAggregateArgsSchema: z.ZodType = z.object({ @@ -6421,18 +6466,21 @@ export const CategoryFindUniqueArgsSchema: z.ZodType = z.object({ select: CategorySelectSchema.optional(), include: CategoryIncludeSchema.optional(), where: CategoryWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserCreateArgsSchema: z.ZodType = z.object({ select: UserSelectSchema.optional(), include: UserIncludeSchema.optional(), data: z.union([ UserCreateInputSchema,UserUncheckedCreateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserUpsertArgsSchema: z.ZodType = z.object({ @@ -6441,6 +6489,7 @@ export const UserUpsertArgsSchema: z.ZodType = z.object({ where: UserWhereUniqueInputSchema, create: z.union([ UserCreateInputSchema,UserUncheckedCreateInputSchema ]), update: z.union([ UserUpdateInputSchema,UserUncheckedUpdateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserCreateManyArgsSchema: z.ZodType = z.object({ @@ -6457,6 +6506,7 @@ export const UserDeleteArgsSchema: z.ZodType = z.object({ select: UserSelectSchema.optional(), include: UserIncludeSchema.optional(), where: UserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserUpdateArgsSchema: z.ZodType = z.object({ @@ -6464,6 +6514,7 @@ export const UserUpdateArgsSchema: z.ZodType = z.object({ include: UserIncludeSchema.optional(), data: z.union([ UserUpdateInputSchema,UserUncheckedUpdateInputSchema ]), where: UserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const UserUpdateManyArgsSchema: z.ZodType = z.object({ @@ -6479,6 +6530,7 @@ export const UserWalletAccountCreateArgsSchema: z.ZodType = z.object({ @@ -6487,6 +6539,7 @@ export const UserWalletAccountUpsertArgsSchema: z.ZodType = z.object({ @@ -6503,6 +6556,7 @@ export const UserWalletAccountDeleteArgsSchema: z.ZodType = z.object({ @@ -6510,6 +6564,7 @@ export const UserWalletAccountUpdateArgsSchema: z.ZodType = z.object({ @@ -6525,6 +6580,7 @@ export const BudgetCreateArgsSchema: z.ZodType = z.obje select: BudgetSelectSchema.optional(), include: BudgetIncludeSchema.optional(), data: z.union([ BudgetCreateInputSchema,BudgetUncheckedCreateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUpsertArgsSchema: z.ZodType = z.object({ @@ -6533,6 +6589,7 @@ export const BudgetUpsertArgsSchema: z.ZodType = z.obje where: BudgetWhereUniqueInputSchema, create: z.union([ BudgetCreateInputSchema,BudgetUncheckedCreateInputSchema ]), update: z.union([ BudgetUpdateInputSchema,BudgetUncheckedUpdateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetCreateManyArgsSchema: z.ZodType = z.object({ @@ -6549,6 +6606,7 @@ export const BudgetDeleteArgsSchema: z.ZodType = z.obje select: BudgetSelectSchema.optional(), include: BudgetIncludeSchema.optional(), where: BudgetWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUpdateArgsSchema: z.ZodType = z.object({ @@ -6556,6 +6614,7 @@ export const BudgetUpdateArgsSchema: z.ZodType = z.obje include: BudgetIncludeSchema.optional(), data: z.union([ BudgetUpdateInputSchema,BudgetUncheckedUpdateInputSchema ]), where: BudgetWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUpdateManyArgsSchema: z.ZodType = z.object({ @@ -6571,6 +6630,7 @@ export const BudgetPeriodConfigCreateArgsSchema: z.ZodType = z.object({ @@ -6579,6 +6639,7 @@ export const BudgetPeriodConfigUpsertArgsSchema: z.ZodType = z.object({ @@ -6595,6 +6656,7 @@ export const BudgetPeriodConfigDeleteArgsSchema: z.ZodType = z.object({ @@ -6602,6 +6664,7 @@ export const BudgetPeriodConfigUpdateArgsSchema: z.ZodType = z.object({ @@ -6617,6 +6680,7 @@ export const BudgetUserCreateArgsSchema: z.ZodType select: BudgetUserSelectSchema.optional(), include: BudgetUserIncludeSchema.optional(), data: z.union([ BudgetUserCreateInputSchema,BudgetUserUncheckedCreateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserUpsertArgsSchema: z.ZodType = z.object({ @@ -6625,6 +6689,7 @@ export const BudgetUserUpsertArgsSchema: z.ZodType where: BudgetUserWhereUniqueInputSchema, create: z.union([ BudgetUserCreateInputSchema,BudgetUserUncheckedCreateInputSchema ]), update: z.union([ BudgetUserUpdateInputSchema,BudgetUserUncheckedUpdateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserCreateManyArgsSchema: z.ZodType = z.object({ @@ -6641,6 +6706,7 @@ export const BudgetUserDeleteArgsSchema: z.ZodType select: BudgetUserSelectSchema.optional(), include: BudgetUserIncludeSchema.optional(), where: BudgetUserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserUpdateArgsSchema: z.ZodType = z.object({ @@ -6648,6 +6714,7 @@ export const BudgetUserUpdateArgsSchema: z.ZodType include: BudgetUserIncludeSchema.optional(), data: z.union([ BudgetUserUpdateInputSchema,BudgetUserUncheckedUpdateInputSchema ]), where: BudgetUserWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const BudgetUserUpdateManyArgsSchema: z.ZodType = z.object({ @@ -6663,6 +6730,7 @@ export const BudgetUserInvitationCreateArgsSchema: z.ZodType = z.object({ @@ -6671,6 +6739,7 @@ export const BudgetUserInvitationUpsertArgsSchema: z.ZodType = z.object({ @@ -6687,6 +6756,7 @@ export const BudgetUserInvitationDeleteArgsSchema: z.ZodType = z.object({ @@ -6694,6 +6764,7 @@ export const BudgetUserInvitationUpdateArgsSchema: z.ZodType = z.object({ @@ -6709,6 +6780,7 @@ export const BudgetUserInvitationResponseCreateArgsSchema: z.ZodType = z.object({ @@ -6717,6 +6789,7 @@ export const BudgetUserInvitationResponseUpsertArgsSchema: z.ZodType = z.object({ @@ -6733,6 +6806,7 @@ export const BudgetUserInvitationResponseDeleteArgsSchema: z.ZodType = z.object({ @@ -6740,6 +6814,7 @@ export const BudgetUserInvitationResponseUpdateArgsSchema: z.ZodType = z.object({ @@ -6755,6 +6830,7 @@ export const TransactionCreateArgsSchema: z.ZodType = z.object({ @@ -6763,6 +6839,7 @@ export const TransactionUpsertArgsSchema: z.ZodType = z.object({ @@ -6779,6 +6856,7 @@ export const TransactionDeleteArgsSchema: z.ZodType = z.object({ @@ -6786,6 +6864,7 @@ export const TransactionUpdateArgsSchema: z.ZodType = z.object({ @@ -6801,6 +6880,7 @@ export const CategoryCreateArgsSchema: z.ZodType = z. select: CategorySelectSchema.optional(), include: CategoryIncludeSchema.optional(), data: z.union([ CategoryCreateInputSchema,CategoryUncheckedCreateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const CategoryUpsertArgsSchema: z.ZodType = z.object({ @@ -6809,6 +6889,7 @@ export const CategoryUpsertArgsSchema: z.ZodType = z. where: CategoryWhereUniqueInputSchema, create: z.union([ CategoryCreateInputSchema,CategoryUncheckedCreateInputSchema ]), update: z.union([ CategoryUpdateInputSchema,CategoryUncheckedUpdateInputSchema ]), + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const CategoryCreateManyArgsSchema: z.ZodType = z.object({ @@ -6825,6 +6906,7 @@ export const CategoryDeleteArgsSchema: z.ZodType = z. select: CategorySelectSchema.optional(), include: CategoryIncludeSchema.optional(), where: CategoryWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const CategoryUpdateArgsSchema: z.ZodType = z.object({ @@ -6832,6 +6914,7 @@ export const CategoryUpdateArgsSchema: z.ZodType = z. include: CategoryIncludeSchema.optional(), data: z.union([ CategoryUpdateInputSchema,CategoryUncheckedUpdateInputSchema ]), where: CategoryWhereUniqueInputSchema, + relationLoadStrategy: RelationLoadStrategySchema.optional(), }).strict() ; export const CategoryUpdateManyArgsSchema: z.ZodType = z.object({ diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 86e86d63..4bb7b82e 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -1,5 +1,6 @@ generator client { - provider = "prisma-client-js" + provider = "prisma-client-js" + previewFeatures = ["relationJoins"] } generator zod { diff --git a/apps/api/v1/index.ts b/apps/api/v1/index.ts index 754aad1e..d6e1b2c8 100644 --- a/apps/api/v1/index.ts +++ b/apps/api/v1/index.ts @@ -10,8 +10,4 @@ hono.get('/', (c) => { return c.json({ message: 'Hello Hono!' }) }) -hono.get('version', (c) => { - return c.json({ version: '1.0.0' }) -}) - hono.route('/auth', authApp) diff --git a/apps/api/v1/middlewares/auth.ts b/apps/api/v1/middlewares/auth.ts index 0f8fe754..6176b761 100644 --- a/apps/api/v1/middlewares/auth.ts +++ b/apps/api/v1/middlewares/auth.ts @@ -1,4 +1,3 @@ -import { clerkMiddleware, getAuth } from '@hono/clerk-auth' +import { clerkMiddleware } from '@hono/clerk-auth' export const authMiddleware = clerkMiddleware -export { getAuth } diff --git a/apps/api/v1/routes/auth.ts b/apps/api/v1/routes/auth.ts index b4233f4a..3d479e9f 100644 --- a/apps/api/v1/routes/auth.ts +++ b/apps/api/v1/routes/auth.ts @@ -1,17 +1,24 @@ -import { zValidator } from '@hono/zod-validator' +import { getAuth } from '@hono/clerk-auth' import { Hono } from 'hono' -import { zLogin } from '../validation' +import { HTTPException } from 'hono/http-exception' +import { findUserById } from '../services/user.service' -const authApp = new Hono() +const router = new Hono() -authApp.get('/login', zValidator('query', zLogin), (c) => { - const { email, password } = c.req.valid('query') - return c.json({ - message: 'Login', - email, - password, - env: process.env.NODE_ENV, - }) +router.get('/me', async (c) => { + const auth = getAuth(c) + + if (!auth?.userId) { + throw new HTTPException(401, { message: 'unauthorized' }) + } + + const user = await findUserById(auth.userId) + + if (!user) { + throw new HTTPException(401, { message: 'unauthorized' }) + } + + return c.json(user) }) -export default authApp +export default router diff --git a/apps/api/v1/services/user.service.ts b/apps/api/v1/services/user.service.ts new file mode 100644 index 00000000..74c128f6 --- /dev/null +++ b/apps/api/v1/services/user.service.ts @@ -0,0 +1,9 @@ +import prisma from '@/lib/prisma' + +export async function findUserById(id: string) { + return await prisma.user.findUnique({ + where: { + id, + }, + }) +}