1
1
import Fastify from "fastify" ;
2
- import Autoload from "@fastify/autoload" ;
2
+ import AutoLoad from "@fastify/autoload" ;
3
+ import Env from "@fastify/env" ;
4
+
3
5
import pino from "pino" ;
4
6
import pretty from "pino-pretty" ;
5
- import { dirname , join } from "node:path" ;
6
- import { fileURLToPath } from "node:url" ;
7
- import registerRoutes from "./routes/routes.js" ;
8
- import registerBooksRoutes from "./routes/booksRoutes.js" ;
9
-
10
- import * as dotenv from "dotenv" ;
11
- dotenv . config ( ) ;
12
-
7
+ import { join } from "desm" ;
13
8
14
9
// logger
15
10
const stream = pretty ( {
@@ -31,20 +26,38 @@ app.decorate("authenticate", async (request, reply) => {
31
26
}
32
27
} ) ;
33
28
34
- const __filename = fileURLToPath ( import . meta. url ) ;
35
- const __dirname = dirname ( __filename ) ;
36
- await app . register ( Autoload , {
37
- dir : join ( __dirname , "plugins" ) ,
29
+ // env
30
+ const envSchema = {
31
+ type : "object" ,
32
+ required : [ "POSTGRES_URL" , "JWT_SECRET" ] ,
33
+ properties : {
34
+ POSTGRES_URL : { type : "string" } ,
35
+ JWT_SECRET : { type : "string" } ,
36
+ NODE_ENV : { type : "string" , default : "development" } ,
37
+ } ,
38
+ } ;
39
+ await app . register ( Env , {
40
+ confKey : "secrets" ,
41
+ schema : envSchema ,
42
+ dotenv : true ,
43
+ } ) ;
44
+
45
+ await app . register ( AutoLoad , {
46
+ dir : join ( import . meta. url , "plugins" ) ,
38
47
dirNameRoutePrefix : false ,
39
48
ignorePattern : / .* .n o - l o a d \. j s / ,
40
49
indexPattern : / ^ n o $ / i,
41
50
} ) ;
42
51
43
- // routes
44
- await registerRoutes ( app ) ;
45
-
46
- // books routes
47
- await registerBooksRoutes ( app ) ;
52
+ // register routes
53
+ await app . register ( import ( "./routes/routes.js" ) ) ;
54
+ await app . register ( import ( "./routes/books/routes.js" ) ) ;
55
+ await app . register ( import ( "./routes/feeds/routes.js" ) ) ;
56
+ await app . register ( import ( "./routes/movies/routes.js" ) ) ;
57
+ await app . register ( import ( "./routes/music/routes.js" ) ) ;
58
+ await app . register ( import ( "./routes/musicals/routes.js" ) ) ;
59
+ await app . register ( import ( "./routes/series/routes.js" ) ) ;
60
+ await app . register ( import ( "./routes/words/routes.js" ) ) ;
48
61
49
62
// start server
50
63
if ( process . env . NODE_ENV === "development" ) {
0 commit comments