Mirror from bluesky-social/pds
1"use strict";
2const {
3 PDS,
4 Database,
5 envToCfg,
6 envToSecrets,
7 readEnv,
8 httpLogger,
9} = require("@atproto/pds");
10const pkg = require("@atproto/pds/package.json");
11
12const main = async () => {
13 const env = readEnv();
14 env.version ||= pkg.version;
15 const cfg = envToCfg(env);
16 const secrets = envToSecrets(env);
17 const pds = await PDS.create(cfg, secrets);
18 if (cfg.db.dialect === "pg") {
19 // Migrate using credentialed user
20 const migrateDb = Database.postgres({
21 url: cfg.db.migrationUrl,
22 schema: cfg.db.schema,
23 });
24 await migrateDb.migrateToLatestOrThrow();
25 await migrateDb.close();
26 } else {
27 await pds.ctx.db.migrateToLatestOrThrow();
28 }
29 await pds.start();
30 httpLogger.info("pds is running");
31 // Graceful shutdown (see also https://aws.amazon.com/blogs/containers/graceful-shutdowns-with-ecs/)
32 process.on("SIGTERM", async () => {
33 httpLogger.info("pds is stopping");
34 await pds.destroy();
35 httpLogger.info("pds is stopped");
36 });
37};
38
39main();