diff --git a/src/controllers/address-controller.ts b/src/controllers/address-controller.ts new file mode 100644 index 0000000..c836829 --- /dev/null +++ b/src/controllers/address-controller.ts @@ -0,0 +1,56 @@ +import { Controller, Get, Path, Route, Tags } from "tsoa"; +import prisma from "../db"; + +@Route("api/address") +@Tags("Address") +export class AddressController extends Controller { + @Get("province") + async getProvince() { + return await prisma.province.findMany(); + } + + @Get("province/{provinceId}") + async getProvinceById(@Path() provinceId: string) { + return await prisma.province.findFirst({ + where: { id: provinceId }, + }); + } + + @Get("province/{provinceId}/district") + async getDistrictOfProvince(@Path() provinceId: string) { + return await prisma.district.findMany({ + where: { provinceId }, + }); + } + + @Get("district") + async getDistrict() { + return await prisma.district.findMany(); + } + + @Get("district/{districtId}") + async getDistrictOfId(@Path() districtId: string) { + return await prisma.province.findFirst({ + where: { id: districtId }, + }); + } + + @Get("district/{districtId}/sub-district") + async getSubDistrictOfDistrict(@Path() districtId: string) { + return await prisma.subDistrict.findMany({ + where: { districtId }, + }); + } + + @Get("sub-district") + async getSubDistrict() { + return await prisma.subDistrict.findMany(); + } + + @Get("sub-district/{subDistrictId}") + async getSubDistrictOfId(@Path() subDistrictId: string) { + return await prisma.subDistrict.findFirst({ + where: { id: subDistrictId }, + }); + } +}