File size: 1,691 Bytes
d76f93d
 
 
 
 
2200342
d76f93d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2200342
d76f93d
 
 
 
 
 
c6c79b9
 
 
 
c9cff96
d76f93d
c9cff96
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import express, { NextFunction, Request, Response } from "express";
import swaggerUi from "swagger-ui-express";
import { RegisterRoutes } from "./routes";
import swaggerDocument from "./swagger.json";
import { errorHandler, notFoundHandler } from "./middlewares/errorHandler";
import { downloadHandler } from "./middlewares/downloadHandler";
import cors from "cors";

// import { testEncryption } from "./utils/encryption";
// testEncryption(
//    'id=69383be7-6547-4777-bb86-7611a99a7e64;name=Katusha;surname=Subtelnik;registrationDate=2025-12-02;currentBooks=["books:2731f7e6-8fd2-41d6-aee3-d28ff900acdc"];history=["books:4a28fe7c-2372-46cc-a416-64453e51bae4","books:0ce72073-6597-45e2-923d-c2aa7da7fcc4","books:4a28fe7c-2372-46cc-a416-64453e51bae4","books:9712915e-c67c-437b-a996-30788211e23d"]'
// );

const app = express();
app.use(express.json());

app.use(cors());

app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
   if (err instanceof SyntaxError && "body" in err) {
      return res.status(400).json({
         successful: false,
         error: {
            message: "Invalid JSON",
            statusCode: 400,
            code: "INVALID_JSON",
         },
      });
   }
   next(err);
});

const router = express.Router();
RegisterRoutes(router);
app.use("/api", downloadHandler, router);

app.use("/docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));

app.use(notFoundHandler);
app.use(errorHandler);

const port = process.env.PORT || 5000;
app.listen(port, () => {
   console.log(`๐Ÿš€ Server running at http://localhost:${port}`);
   console.log(`๐Ÿ“˜ Swagger docs available at http://localhost:${port}/docs`);
});

// module.exports = app;