📝 docs: add OpenAPI for API documentation
This commit is contained in:
3
bun.lock
3
bun.lock
@ -5,6 +5,7 @@
|
||||
"": {
|
||||
"name": "mvp.nounoz.com_v2",
|
||||
"dependencies": {
|
||||
"@elysiajs/openapi": "^1.4.14",
|
||||
"@prisma/adapter-pg": "^7.2.0",
|
||||
"@prisma/client": "^7.2.0",
|
||||
"@sentry/node": "^10.10.0",
|
||||
@ -72,6 +73,8 @@
|
||||
|
||||
"@electric-sql/pglite-tools": ["@electric-sql/pglite-tools@0.2.7", "", { "peerDependencies": { "@electric-sql/pglite": "0.3.2" } }, "sha512-9dAccClqxx4cZB+Ar9B+FZ5WgxDc/Xvl9DPrTWv+dYTf0YNubLzi4wHHRGRGhrJv15XwnyKcGOZAP1VXSneSUg=="],
|
||||
|
||||
"@elysiajs/openapi": ["@elysiajs/openapi@1.4.14", "", { "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-kWmJWdvP8/LwHwAJXSpz6xFfYUoyUyEPRimEYABuDU1rOnS27Da1u9T2jyU7frOopxKWV/wDfDxMP8z2xdCPJw=="],
|
||||
|
||||
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="],
|
||||
|
||||
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
"env:publish": "bun run ./scripts/create-example-env.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@elysiajs/openapi": "^1.4.14",
|
||||
"@prisma/adapter-pg": "^7.2.0",
|
||||
"@prisma/client": "^7.2.0",
|
||||
"@sentry/node": "^10.10.0",
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
|
||||
import openapi from "@elysiajs/openapi";
|
||||
import { middleware } from "./middleware";
|
||||
import { validateEnv } from "./utils/startups/validateEnv";
|
||||
|
||||
@ -17,6 +18,7 @@ async function bootstrap() {
|
||||
new Elysia()
|
||||
.use(middleware)
|
||||
.use(routes)
|
||||
.use(openapi())
|
||||
.listen(process.env.APP_PORT || 3000);
|
||||
|
||||
console.log(
|
||||
|
||||
@ -3,6 +3,7 @@ import { returnErrorResponse } from "../../helpers/callback/httpResponse";
|
||||
|
||||
export const appAccessTokenMiddleware = () =>
|
||||
new Elysia().onRequest(({ request, set }) => {
|
||||
if (process.env.APP_ENV !== "development") {
|
||||
const headerToken = request.headers.get("authorization");
|
||||
if (!headerToken) return returnErrorResponse(set, 401, "Unauthorized");
|
||||
|
||||
@ -13,4 +14,5 @@ export const appAccessTokenMiddleware = () =>
|
||||
return returnErrorResponse(set, 401, "Invalid auth format");
|
||||
if (token !== storedToken)
|
||||
return returnErrorResponse(set, 403, "Forbidden");
|
||||
}
|
||||
});
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
import { AppError } from "../../../helpers/error/instances/app";
|
||||
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
|
||||
import { findSystemPreferenceService } from "../../systemPreference/services/internal/findSystemPreference.service";
|
||||
import { findAllActiveHeroBannerRepository } from "../repositories/GET/findAllActiveHeroBanner.repository";
|
||||
|
||||
export const getActiveHeroBannerService = async () => {
|
||||
try {
|
||||
const isHeroBannerEnabled = await findSystemPreferenceService(
|
||||
"HERO_BANNER_ENABLED",
|
||||
"boolean",
|
||||
);
|
||||
if (!isHeroBannerEnabled)
|
||||
throw new AppError(403, "Hero Banner is disabled");
|
||||
|
||||
return await findAllActiveHeroBannerRepository();
|
||||
} catch (error) {
|
||||
ErrorForwarder(error);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user