refactor(assignments): move workflows into use cases
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
import type { Prisma } from "@/generated/prisma/client"
|
||||
import { paginate } from "@/lib/paginate"
|
||||
import prisma from "@/lib/prisma"
|
||||
import type { CreateAssignmentData } from "@/lib/schemas/assignment.schemas"
|
||||
import type { Assignment, AssignmentWithRecipientItemAsset } from "@/lib/types"
|
||||
|
||||
import { getAuthenticatedUserId } from "./auth.service"
|
||||
import type { CreateAssignmentData } from "@/schemas/assignment.schema"
|
||||
import type { Assignment, AssignmentWithRecipientItemAsset } from "@/types"
|
||||
|
||||
export const AssignmentService = {
|
||||
findAllWithRecipient: async (): Promise<
|
||||
@@ -72,8 +70,9 @@ export const AssignmentService = {
|
||||
},
|
||||
findById: async (
|
||||
id: string,
|
||||
db: Prisma.TransactionClient | typeof prisma = prisma,
|
||||
): Promise<AssignmentWithRecipientItemAsset | null> => {
|
||||
return prisma.assignment.findUnique({
|
||||
return db.assignment.findUnique({
|
||||
where: { id },
|
||||
include: {
|
||||
recipient: true,
|
||||
@@ -94,12 +93,12 @@ export const AssignmentService = {
|
||||
},
|
||||
})
|
||||
},
|
||||
create: async (data: CreateAssignmentData): Promise<Assignment> => {
|
||||
return prisma.assignment.create({
|
||||
data: {
|
||||
...data,
|
||||
createdBy: await getAuthenticatedUserId(),
|
||||
},
|
||||
create: async (
|
||||
data: CreateAssignmentData & { createdBy: string },
|
||||
db: Prisma.TransactionClient | typeof prisma = prisma,
|
||||
): Promise<Assignment> => {
|
||||
return db.assignment.create({
|
||||
data,
|
||||
})
|
||||
},
|
||||
delete: async (id: string): Promise<Assignment> => {
|
||||
@@ -114,11 +113,32 @@ export const AssignmentService = {
|
||||
},
|
||||
})
|
||||
},
|
||||
markReturnedIfActive: async (
|
||||
id: string,
|
||||
db: Prisma.TransactionClient | typeof prisma = prisma,
|
||||
): Promise<boolean> => {
|
||||
const result = await db.assignment.updateMany({
|
||||
where: {
|
||||
id,
|
||||
returnDate: null,
|
||||
},
|
||||
data: {
|
||||
returnDate: new Date(),
|
||||
recipientId: null,
|
||||
quantity: null,
|
||||
assetId: null,
|
||||
itemId: null,
|
||||
},
|
||||
})
|
||||
|
||||
return result.count === 1
|
||||
},
|
||||
update: async (
|
||||
id: string,
|
||||
data: Prisma.AssignmentUpdateInput,
|
||||
data: Prisma.AssignmentUpdateInput | Prisma.AssignmentUncheckedUpdateInput,
|
||||
db: Prisma.TransactionClient | typeof prisma = prisma,
|
||||
): Promise<Assignment> => {
|
||||
return prisma.assignment.update({
|
||||
return db.assignment.update({
|
||||
where: { id },
|
||||
data,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user