75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
import Fastify from 'fastify';
|
|
import cookie from '@fastify/cookie';
|
|
import multipart from '@fastify/multipart';
|
|
|
|
import { registerAuthRoutes } from '../modules/auth/routes/auth-routes.js';
|
|
import { registerAdminInventoryRoutes } from '../modules/inventory/routes/admin-inventory-routes.js';
|
|
import { registerAdminImageRoutes } from '../modules/inventory/routes/admin-image-routes.js';
|
|
import { registerPublicInventoryRoutes } from '../modules/inventory/routes/public-inventory-routes.js';
|
|
import { registerAdminListingRoutes } from '../modules/listings/routes/admin-listing-routes.js';
|
|
import { registerPublicListingRoutes } from '../modules/listings/routes/public-listing-routes.js';
|
|
import { registerAdminProductRoutes } from '../modules/products/routes/admin-product-routes.js';
|
|
import { registerPublicProductRoutes } from '../modules/products/routes/public-product-routes.js';
|
|
import { registerPublicSearchRoutes } from '../modules/search/routes/public-search-routes.js';
|
|
|
|
export function buildApp(dependencies) {
|
|
const app = Fastify();
|
|
|
|
app.setErrorHandler((error, request, reply) => {
|
|
const statusCode = error.statusCode ?? 500;
|
|
const message = statusCode >= 500 ? 'Internal server error.' : error.message;
|
|
|
|
if (statusCode >= 500) {
|
|
request.log.error(error);
|
|
}
|
|
|
|
return reply.code(statusCode).send({
|
|
error: {
|
|
code: error.code ?? 'INTERNAL_SERVER_ERROR',
|
|
message,
|
|
},
|
|
});
|
|
});
|
|
|
|
app.get('/health', async () => ({ data: { status: 'ok' } }));
|
|
app.register(cookie);
|
|
app.register(multipart, { limits: { fileSize: 10 * 1024 * 1024, files: 1 } });
|
|
app.register(registerAuthRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1/auth',
|
|
});
|
|
app.register(registerAdminProductRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1/admin',
|
|
});
|
|
app.register(registerAdminInventoryRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1/admin',
|
|
});
|
|
app.register(registerAdminImageRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1/admin',
|
|
});
|
|
app.register(registerAdminListingRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1/admin',
|
|
});
|
|
app.register(registerPublicSearchRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1',
|
|
});
|
|
app.register(registerPublicProductRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1',
|
|
});
|
|
app.register(registerPublicListingRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1',
|
|
});
|
|
app.register(registerPublicInventoryRoutes, {
|
|
...dependencies,
|
|
prefix: '/api/v1',
|
|
});
|
|
|
|
return app;
|
|
} |