diff --git a/backend/typescript/rest/paymentRoutes.ts b/backend/typescript/rest/paymentRoutes.ts new file mode 100644 index 0000000..0c931cc --- /dev/null +++ b/backend/typescript/rest/paymentRoutes.ts @@ -0,0 +1,26 @@ +import { Router } from "express"; +import PaymentService from "../services/implementations/paymentService"; +import IPaymentService from "../services/interfaces/paymentService"; + +const paymentRouter: Router = Router(); +const paymentService: IPaymentService = new PaymentService(); + +paymentRouter.post("/", (req, res) => { + try { + paymentService.createPayment(req.body) + } catch (err) { + console.error(err) + } + res.send("Payment successful!"); +}); + +paymentRouter.put("/", (req, res) => { + const { id, payload } = req.body + try { + paymentService.updatePayment(id, payload) + } catch (err) { + console.error(err) + } + + res.send("Payment updated!"); +}); \ No newline at end of file diff --git a/backend/typescript/services/implementations/paymentService.ts b/backend/typescript/services/implementations/paymentService.ts new file mode 100644 index 0000000..3d68a1d --- /dev/null +++ b/backend/typescript/services/implementations/paymentService.ts @@ -0,0 +1,35 @@ +import IPaymentService from "../interfaces/paymentService"; +import prisma from "../../prisma"; + +class PaymentService implements IPaymentService { + async createPayment(payload: any): Promise { + try { + const newPayment = prisma.payment.create({ + data: payload + }) + + return newPayment; + } catch (error) { + console.error(error) + } + + } + + async updatePayment(paymentId: number, payload: any): Promise { + + try { + const updatedPayment = prisma.payment.update({ + where: { + id: paymentId, + }, + data: payload + }) + + return updatedPayment; + } catch (error) { + console.error(error) + } + } +} + +export default PaymentService; \ No newline at end of file diff --git a/backend/typescript/services/interfaces/paymentService.ts b/backend/typescript/services/interfaces/paymentService.ts new file mode 100644 index 0000000..6649385 --- /dev/null +++ b/backend/typescript/services/interfaces/paymentService.ts @@ -0,0 +1,32 @@ + + +/** + * Interface for the PaymentDTO class + */ +// export interface PaymentDTO { +// id: number; +// stripePaymentId: string; +// creationDate: string; +// updateDate: string; +// // donation?: number; +// amount: number; +// currency: string; +// status: string; +// } + +/** + * Interface for the PaymentService class + */ +interface IPaymentService { + /** + * retrieve the SimpleEntity with the given id + * @param id SimpleEntity id + * @returns requested SimpleEntity + * @throws Error if retrieval fails + */ + createPayment(payload: any): Promise; + + updatePayment(paymentId: number, payload: any): Promise; +} + +export default IPaymentService; \ No newline at end of file