Skip to content

Commit

Permalink
feat(printing request): implement api for create printing request
Browse files Browse the repository at this point in the history
  • Loading branch information
quannhg committed Oct 17, 2023
1 parent 1b3bbe2 commit 1515e35
Show file tree
Hide file tree
Showing 9 changed files with 40 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- AlterTable
ALTER TABLE "PrintingRequest" ADD COLUMN "printFee" DOUBLE PRECISION NOT NULL DEFAULT 0,
ADD COLUMN "serviceFee" DOUBLE PRECISION NOT NULL DEFAULT 0,
ALTER COLUMN "paid" SET DEFAULT 'not_paid';
8 changes: 5 additions & 3 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@ model PrintingRequest {
number Int @default(0)
pageNumber Int @default(0)
coins Int @default(0)
paid Paid
paid Paid @default(not_paid)
student Student @relation(fields: [userId], references: [id])
userId String
files File[]
location Location? @relation(fields: [locationId], references: [id])
locationId String?
location Location? @relation(fields: [locationId], references: [id])
locationId String?
printFee Float @default(0)
serviceFee Float @default(0)
}

model Location {
Expand Down
5 changes: 2 additions & 3 deletions src/dtos/in/printingRequest.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@ import { Static, Type } from '@sinclair/typebox';

// See https://github.com/sinclairzx81/typebox

export const PrintingRequestInputDto = Type.Object({
export const CreatePrintingRequestInputDto = Type.Object({
userName: Type.String()
});

export const ExecutePrintingRequestInputDto = Type.Object({
printingRequestId: Type.String()
});

export type CreatePrintingRequestInputDto = Static<typeof CreatePrintingRequestInputDto>;
export type ExecutePrintingRequestInputDto = Static<typeof ExecutePrintingRequestInputDto>;

export type PrintingRequestInputDto = Static<typeof PrintingRequestInputDto>;
2 changes: 2 additions & 0 deletions src/dtos/out/printingRequest.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ export const ExecutePrintingRequestResultDto = Type.Object({

export type GetPrintingRequestResultDto = Static<typeof GetPrintingRequestResultDto>;

export type CreatePrintingRequestResultDto = Static<typeof CreatePrintingRequestResultDto>;

export type ExecutePrintingRequestResultDto = Static<typeof ExecutePrintingRequestResultDto>;
27 changes: 24 additions & 3 deletions src/handlers/printingRequest.handler.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { prisma } from '@repositories';
import { GetPrintingRequestResultDto } from '@dtos/out';
import { CreatePrintingRequestResultDto, GetPrintingRequestResultDto } from '@dtos/out';
import { Handler } from '@interfaces';
import { PAID, PRINTING_STATUS } from '@constants';
import { logger } from '@utils';

const getAllPrintingRequest: Handler<GetPrintingRequestResultDto, { Params: { userId: string } }> = async (req) => {
const getAllPrintingRequest: Handler<GetPrintingRequestResultDto> = async (req) => {
const userId = req.userId;

const printingRequests = await prisma.printingRequest.findMany({
select: {
id: true,
Expand Down Expand Up @@ -45,6 +47,25 @@ const getAllPrintingRequest: Handler<GetPrintingRequestResultDto, { Params: { us
return formattedPrintingRequests;
};

const createPrintingRequest: Handler<CreatePrintingRequestResultDto> = async (req, res) => {
try {
const userId = req.userId;

const printingRequestId = await prisma.printingRequest.create({
data: {
userId
},
select: { id: true }
});

return res.status(200).send(printingRequestId);
} catch (err) {
logger.error(err);
throw new Error('Failed to create printing request');
}
};

export const printingRequestHandler = {
getAllPrintingRequest
getAllPrintingRequest,
createPrintingRequest
};
2 changes: 1 addition & 1 deletion src/handlers/uploadFile.handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const updateFileAndStatusOfPrintingRequestToDb = async (minioName: string, confi
})
]);
} catch (error) {
throw new Error('Failed to update file and status in the database');
throw new Error('Failed to update file and status to printing request');
}
};

Expand Down
4 changes: 2 additions & 2 deletions src/routes/apis/printingRequest.plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export const printingRequestPlugin = createRoutes('Printing Request', [
url: '',
roles: ['*'],
schema: {
summary: 'Get printing request list of current user',
summary: 'Get all printing request of current user',
response: {
200: GetPrintingRequestResultDto
}
Expand All @@ -26,7 +26,7 @@ export const printingRequestPlugin = createRoutes('Printing Request', [
200: CreatePrintingRequestResultDto
}
},
handler: printingRequestHandler.getAllPrintingRequest
handler: printingRequestHandler.createPrintingRequest
},
{
method: 'POST',
Expand Down
11 changes: 0 additions & 11 deletions src/utils/decorate.plugin.ts

This file was deleted.

1 change: 0 additions & 1 deletion src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,5 @@
*/

export * from './createRoutes';
export * from './decorate.plugin';
export * from './logger';
export * from './minio';

0 comments on commit 1515e35

Please sign in to comment.