feat: customer create endpoint
This commit is contained in:
parent
4d8ea943a9
commit
41c27dced5
1 changed files with 63 additions and 0 deletions
63
src/controllers/customer-controller.ts
Normal file
63
src/controllers/customer-controller.ts
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import { Prisma, Status } from "@prisma/client";
|
||||
import { Body, Controller, Delete, Get, Path, Post, Put, Query, Request, Route, Tags } from "tsoa";
|
||||
import { RequestWithUser } from "../interfaces/user";
|
||||
import prisma from "../db";
|
||||
import minio from "../services/minio";
|
||||
import HttpStatus from "../interfaces/http-status";
|
||||
import HttpError from "../interfaces/http-error";
|
||||
|
||||
if (!process.env.MINIO_BUCKET) {
|
||||
throw Error("Require MinIO bucket.");
|
||||
}
|
||||
|
||||
const MINIO_BUCKET = process.env.MINIO_BUCKET;
|
||||
|
||||
export type CustomerCreate = {
|
||||
code?: string;
|
||||
status?: Status;
|
||||
customerType: string;
|
||||
customerName: string;
|
||||
customerNameEN: string;
|
||||
};
|
||||
|
||||
export type CustomerUpdate = {
|
||||
code?: string;
|
||||
status?: "ACTIVE" | "INACTIVE";
|
||||
customerType?: string;
|
||||
customerName?: string;
|
||||
customerNameEN?: string;
|
||||
};
|
||||
|
||||
function imageLocation(id: string) {
|
||||
return `customer/img-${id}`;
|
||||
}
|
||||
|
||||
@Route("api/customer")
|
||||
@Tags("Customer")
|
||||
export class CustomerController extends Controller {
|
||||
@Post()
|
||||
async create(@Request() req: RequestWithUser, @Body() body: CustomerCreate) {
|
||||
const record = await prisma.customer.create({
|
||||
data: {
|
||||
...body,
|
||||
createdBy: req.user.name,
|
||||
updateBy: req.user.name,
|
||||
},
|
||||
});
|
||||
|
||||
this.setStatus(HttpStatus.CREATED);
|
||||
|
||||
return Object.assign(record, {
|
||||
imageUrl: await minio.presignedGetObject(
|
||||
MINIO_BUCKET,
|
||||
imageLocation(record.id),
|
||||
12 * 60 * 60,
|
||||
),
|
||||
imageUploadUrl: await minio.presignedPutObject(
|
||||
MINIO_BUCKET,
|
||||
imageLocation(record.id),
|
||||
12 * 60 * 60,
|
||||
),
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue