decentralised message store
1import { setupDbWithMigrations } from "@/db";
2import { DB_URL, SERVER_PORT } from "@/lib/env";
3import { routes } from "@/routes";
4import { setupServer } from "@/server";
5
6const main = async () => {
7 if (DB_URL === ":memory:") await setupDbWithMigrations("./drizzle");
8
9 const server = await setupServer();
10 for (const [url, route] of Object.entries(routes)) {
11 if (!route.wsHandler) {
12 const { handler, method } = route;
13 server.route({
14 url,
15 method,
16 handler,
17 });
18 } else {
19 const { wsHandler, method, handler, preHandler } = route;
20 server.register(() => {
21 server.route({
22 url,
23 method: method ?? "GET",
24 handler: handler ?? (() => new Response()),
25 wsHandler,
26 preHandler,
27 });
28 });
29 }
30 }
31
32 server.listen({ port: SERVER_PORT }).catch((err: unknown) => {
33 server.log.error(err);
34 process.exit(1);
35 });
36};
37
38main()
39 .then(() => {
40 console.log(`Server is running on port ${SERVER_PORT.toString()}`);
41 })
42 .catch((err: unknown) => {
43 console.error("Something went wrong :(");
44 console.error(
45 "=========================== FULL ERROR BELOW ===========================",
46 );
47 console.error(err);
48 });