refactor service types to use Prisma.validator
This commit is contained in:
@@ -1,23 +1,19 @@
|
||||
import { ACCOUNT_ACCESS } from '@prisma/client';
|
||||
import prisma_client from '~~/prisma/prisma.client';
|
||||
import { AccountWithMembers, MembershipWithAccount, MembershipWithUser } from './service.types';
|
||||
import { accountWithMembers, AccountWithMembers, membershipWithAccount, MembershipWithAccount, membershipWithUser, MembershipWithUser } from './service.types';
|
||||
|
||||
export default class AccountService {
|
||||
async getAccountById(account_id: number): Promise<AccountWithMembers> {
|
||||
return prisma_client.account.findFirstOrThrow({
|
||||
where: { id: account_id },
|
||||
include: { members: {include: {
|
||||
user: true
|
||||
}} }
|
||||
...accountWithMembers
|
||||
});
|
||||
}
|
||||
|
||||
async getAccountMembers(account_id: number): Promise<MembershipWithUser[]> {
|
||||
return prisma_client.membership.findMany({
|
||||
where: { account_id },
|
||||
include: {
|
||||
user: true
|
||||
}
|
||||
...membershipWithUser
|
||||
});
|
||||
}
|
||||
|
||||
@@ -87,9 +83,7 @@ export default class AccountService {
|
||||
account_id,
|
||||
access: ACCOUNT_ACCESS.READ_ONLY
|
||||
},
|
||||
include: {
|
||||
account: true
|
||||
}
|
||||
...membershipWithAccount
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ACCOUNT_ACCESS } from '@prisma/client';
|
||||
import prisma_client from '~~/prisma/prisma.client';
|
||||
import { FullDBUser } from './service.types';
|
||||
import { fullDBUser, FullDBUser } from './service.types';
|
||||
import { UtilService } from './util.service';
|
||||
|
||||
const config = useRuntimeConfig();
|
||||
@@ -9,18 +9,14 @@ export default class AuthService {
|
||||
async getFullUserBySupabaseId(supabase_uid: string): Promise<FullDBUser | null> {
|
||||
return prisma_client.user.findFirst({
|
||||
where: { supabase_uid },
|
||||
include: { memberships: {include: {
|
||||
account: true
|
||||
}}}
|
||||
...fullDBUser
|
||||
});
|
||||
}
|
||||
|
||||
async getUserById(user_id: number): Promise<FullDBUser | null> {
|
||||
return prisma_client.user.findFirstOrThrow({
|
||||
where: { id: user_id },
|
||||
include: { memberships: {include: {
|
||||
account: true
|
||||
}}}
|
||||
...fullDBUser
|
||||
});
|
||||
}
|
||||
|
||||
@@ -48,13 +44,14 @@ export default class AuthService {
|
||||
}
|
||||
}
|
||||
},
|
||||
include: { memberships: {include: {
|
||||
account: true
|
||||
}}}
|
||||
...fullDBUser
|
||||
});
|
||||
}
|
||||
|
||||
async deleteUser(user_id: number) {
|
||||
return prisma_client.user.delete({ where: { id: user_id } });
|
||||
async deleteUser(user_id: number): Promise<FullDBUser> {
|
||||
return prisma_client.user.delete({
|
||||
where: { id: user_id },
|
||||
...fullDBUser
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
import { User, Membership, Account } from '@prisma/client';
|
||||
export type MembershipWithAccount = (Membership & {account: Account});
|
||||
export type FullDBUser = (User & { memberships: MembershipWithAccount[]; });
|
||||
export type MembershipWithUser = (Membership & { user: User});
|
||||
export type AccountWithMembers = (Account & {members: MembershipWithUser[]});
|
||||
import { Prisma } from '@prisma/client';
|
||||
|
||||
export const membershipWithAccount = Prisma.validator<Prisma.MembershipArgs>()({
|
||||
include: { account: true },
|
||||
})
|
||||
export type MembershipWithAccount = Prisma.MembershipGetPayload<typeof membershipWithAccount>
|
||||
|
||||
export const membershipWithUser = Prisma.validator<Prisma.MembershipArgs>()({
|
||||
include: { user: true },
|
||||
})
|
||||
export type MembershipWithUser = Prisma.MembershipGetPayload<typeof membershipWithUser>
|
||||
|
||||
export const fullDBUser = Prisma.validator<Prisma.UserArgs>()({
|
||||
include: { memberships: {include: {
|
||||
account: true
|
||||
}}}
|
||||
});
|
||||
export type FullDBUser = Prisma.UserGetPayload<typeof fullDBUser> //TODO - I wonder if this could be replaced by just user level info
|
||||
|
||||
export const accountWithMembers = Prisma.validator<Prisma.AccountArgs>()({
|
||||
include: { members: {include: {
|
||||
user: true
|
||||
}} }
|
||||
})
|
||||
export type AccountWithMembers = Prisma.AccountGetPayload<typeof accountWithMembers> //TODO - I wonder if this could just be a list of full memberships
|
||||
|
||||
Reference in New Issue
Block a user