@powerhousedao/switchboard 2.2.137 → 2.2.144

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,74 @@
1
+ ## 2.2.144 (2025-05-09)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **switchboard, reactor-api:** merged from main ([4bb2ac063](https://github.com/powerhouse-inc/powerhouse/commit/4bb2ac063))
6
+ - **reactor-api,reactor-local,switchboard:** wait initial timeout before start listening to requests ([f49c00d4a](https://github.com/powerhouse-inc/powerhouse/commit/f49c00d4a))
7
+ - **reactor-api,reactor-local,switchboard:** wait initial timeout before start listening to requests ([409f1e316](https://github.com/powerhouse-inc/powerhouse/commit/409f1e316))
8
+ - **switchboard:** use reactor api package manager ([e5b5722fe](https://github.com/powerhouse-inc/powerhouse/commit/e5b5722fe))
9
+ - **switchboard:** added sentry ([f1f0c13db](https://github.com/powerhouse-inc/powerhouse/commit/f1f0c13db))
10
+ - **switchboard:** dockerfile with workspace packages ([29eb440f2](https://github.com/powerhouse-inc/powerhouse/commit/29eb440f2))
11
+ - **connect:** handle imports ([d22b08138](https://github.com/powerhouse-inc/powerhouse/commit/d22b08138))
12
+ - **switchboard:** load packages through env var ([62be0cf46](https://github.com/powerhouse-inc/powerhouse/commit/62be0cf46))
13
+ - **monorepo:** enable type import lint rule ([5fd802021](https://github.com/powerhouse-inc/powerhouse/commit/5fd802021))
14
+ - **atlas:** add atlas subgraphs to switchboard ([777434d6a](https://github.com/powerhouse-inc/powerhouse/commit/777434d6a))
15
+ - **monorepo:** unify linting and build ([542313e91](https://github.com/powerhouse-inc/powerhouse/commit/542313e91))
16
+ - **document-model:** add utils for simpler state and action inference ([752712b47](https://github.com/powerhouse-inc/powerhouse/commit/752712b47))
17
+ - **monorepo:** fix top level type errors ([c2d935805](https://github.com/powerhouse-inc/powerhouse/commit/c2d935805))
18
+ - **monorepo:** include global check-types ([f4b042227](https://github.com/powerhouse-inc/powerhouse/commit/f4b042227))
19
+ - **builder-tools:** remove redundant deps ([fdf091df0](https://github.com/powerhouse-inc/powerhouse/commit/fdf091df0))
20
+ - **connect:** finish type rename ([865be799e](https://github.com/powerhouse-inc/powerhouse/commit/865be799e))
21
+ - **document-drive:** update document drive imports ([f76746d99](https://github.com/powerhouse-inc/powerhouse/commit/f76746d99))
22
+ - **document-model:** update generics ([211dfe954](https://github.com/powerhouse-inc/powerhouse/commit/211dfe954))
23
+ - merge main into dspot-branch ([#769](https://github.com/powerhouse-inc/powerhouse/pull/769))
24
+ - **reactor-api:** Added support for processors ([#655](https://github.com/powerhouse-inc/powerhouse/pull/655))
25
+ - **monorepo:** simplify parallel task execution ([0ed8df13a](https://github.com/powerhouse-inc/powerhouse/commit/0ed8df13a))
26
+ - **monorepo:** handle project references ([3b6c046f2](https://github.com/powerhouse-inc/powerhouse/commit/3b6c046f2))
27
+ - use unified deps ([38c759a97](https://github.com/powerhouse-inc/powerhouse/commit/38c759a97))
28
+ - **monorepo:** unify typescript and linting ([24b9a2058](https://github.com/powerhouse-inc/powerhouse/commit/24b9a2058))
29
+ - **monorepo:** use workspace protocol in package deps ([2584e9dd0](https://github.com/powerhouse-inc/powerhouse/commit/2584e9dd0))
30
+ - **reactor-api:** init project ([#388](https://github.com/powerhouse-inc/powerhouse/pull/388))
31
+
32
+ ### 🩹 Fixes
33
+
34
+ - **reactor-api, switchboard:** work with postgresql prefix ([3339f08ec](https://github.com/powerhouse-inc/powerhouse/commit/3339f08ec))
35
+ - **switchboard,reactor-local:** latest version of sky atlas was not being installed ([72bf72fd4](https://github.com/powerhouse-inc/powerhouse/commit/72bf72fd4))
36
+ - **switchboard:** removed duplicate listen ([02ca53a9d](https://github.com/powerhouse-inc/powerhouse/commit/02ca53a9d))
37
+ - **stoybook:** removed package.json check on packages ([4a2f88c39](https://github.com/powerhouse-inc/powerhouse/commit/4a2f88c39))
38
+ - **document-drive:** do not export prisma factory on index ([a32ef36aa](https://github.com/powerhouse-inc/powerhouse/commit/a32ef36aa))
39
+ - **switchboard:** heroku deployment missing sky ph dep ([d47dc3f84](https://github.com/powerhouse-inc/powerhouse/commit/d47dc3f84))
40
+ - **switchboard:** small optimizations on build and runtime ([63ef21b8a](https://github.com/powerhouse-inc/powerhouse/commit/63ef21b8a))
41
+ - **switchboard:** global ph-cmd install in dockerfile ([3d79fdd5f](https://github.com/powerhouse-inc/powerhouse/commit/3d79fdd5f))
42
+ - **switchboard:** linting issues ([dd3bf5e02](https://github.com/powerhouse-inc/powerhouse/commit/dd3bf5e02))
43
+ - **switchboard:** linting issues ([b5cf4c5b4](https://github.com/powerhouse-inc/powerhouse/commit/b5cf4c5b4))
44
+ - **switchboard:** updated sky-ph dependency ([39ddbfdfe](https://github.com/powerhouse-inc/powerhouse/commit/39ddbfdfe))
45
+ - remove tsc build from postinstall ([4a4df5b65](https://github.com/powerhouse-inc/powerhouse/commit/4a4df5b65))
46
+ - keep consistent zod version across projects ([97cdadab3](https://github.com/powerhouse-inc/powerhouse/commit/97cdadab3))
47
+ - **switchboard:** name mistake ([8e284b3d9](https://github.com/powerhouse-inc/powerhouse/commit/8e284b3d9))
48
+ - **switchboard:** copy paste mistake ([76eb0b1c7](https://github.com/powerhouse-inc/powerhouse/commit/76eb0b1c7))
49
+ - **switchboard:** use tsc instead up tsup and vite node ([de2e7104b](https://github.com/powerhouse-inc/powerhouse/commit/de2e7104b))
50
+ - **document-model:** revert document model module changes ([87dae96d3](https://github.com/powerhouse-inc/powerhouse/commit/87dae96d3))
51
+ - **connect:** connect bundling fixes ([a56c4e625](https://github.com/powerhouse-inc/powerhouse/commit/a56c4e625))
52
+ - **document-drive:** many broken constructors ([7274c34d4](https://github.com/powerhouse-inc/powerhouse/commit/7274c34d4))
53
+ - **codegen:** readded config dependency ([289bdaf41](https://github.com/powerhouse-inc/powerhouse/commit/289bdaf41))
54
+ - **switchboard:** subgraph manager and db instantiation ([874bdc4b0](https://github.com/powerhouse-inc/powerhouse/commit/874bdc4b0))
55
+ - **reactor-api:** remove dependency on switchboard ([5afaf7250](https://github.com/powerhouse-inc/powerhouse/commit/5afaf7250))
56
+ - bad package reference was breaking build -- also a readme update ([4121e51b4](https://github.com/powerhouse-inc/powerhouse/commit/4121e51b4))
57
+ - **switchboard:** startup ([#469](https://github.com/powerhouse-inc/powerhouse/pull/469))
58
+
59
+ ### 🧱 Updated Dependencies
60
+
61
+ - Updated @powerhousedao/reactor-api to 1.31.1
62
+
63
+ ### ❤️ Thank You
64
+
65
+ - acaldas @acaldas
66
+ - Benjamin Jordan
67
+ - Frank
68
+ - frankp.eth @froid1911
69
+ - Guillermo Puente Sandoval @gpuente
70
+ - ryanwolhuter @ryanwolhuter
71
+
1
72
  ## 2.2.0 (2025-03-19)
2
73
 
3
74
  ### 🚀 Features
@@ -1,5 +1,5 @@
1
1
  import { type RedisClientType } from "redis";
2
2
  export declare let redisClient: RedisClientType;
3
- export declare const initRedis: () => Promise<RedisClientType>;
3
+ export declare const initRedis: (url: string) => Promise<RedisClientType>;
4
4
  export declare const closeRedis: () => void;
5
5
  //# sourceMappingURL=redis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/clients/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAE3D,eAAO,IAAI,WAAW,EAAE,eAAe,CAAC;AACxC,eAAO,MAAM,SAAS,gCA4BrB,CAAC;AAeF,eAAO,MAAM,UAAU,YAItB,CAAC"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/clients/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAE3D,eAAO,IAAI,WAAW,EAAE,eAAe,CAAC;AACxC,eAAO,MAAM,SAAS,GAAU,KAAK,MAAM,6BAuB1C,CAAC;AAeF,eAAO,MAAM,UAAU,YAItB,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import { createClient } from "redis";
2
2
  export let redisClient;
3
- export const initRedis = async () => {
3
+ export const initRedis = async (url) => {
4
4
  if (!redisClient) {
5
- const url = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
6
- if (!url) {
7
- throw new Error("REDIS_TLS_URL is not set");
8
- }
9
5
  const socket = url.includes("rediss")
10
6
  ? {
11
7
  tls: true,
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/clients/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,OAAO,CAAC;AAE3D,MAAM,CAAC,IAAI,WAA4B,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC;gBACE,GAAG,EAAE,IAAI;gBACT,kBAAkB,EAAE,KAAK;aAC1B;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,WAAW,GAAG,YAAY,CAAC;YACzB,GAAG;YACH,MAAM;SACP,CAAC,CAAC;QAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,WAAW,CACvB,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,EACD,IAAI,GAAG,EAAE,GAAG,CAAC,CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,aAAa,CAAC,KAAK,CAAC,CAAC;IAErB,WAAW,CAAC,UAAU,EAAE,CAAC;AAC3B,CAAC,CAAC"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/clients/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,OAAO,CAAC;AAE3D,MAAM,CAAC,IAAI,WAA4B,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC;gBACE,GAAG,EAAE,IAAI;gBACT,kBAAkB,EAAE,KAAK;aAC1B;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,WAAW,GAAG,YAAY,CAAC;YACzB,GAAG;YACH,MAAM;SACP,CAAC,CAAC;QAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,WAAW,CACvB,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,EACD,IAAI,GAAG,EAAE,GAAG,CAAC,CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,aAAa,CAAC,KAAK,CAAC,CAAC;IAErB,WAAW,CAAC,UAAU,EAAE,CAAC;AAC3B,CAAC,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { startAPI } from "@powerhousedao/reactor-api";
3
3
  import * as Sentry from "@sentry/node";
4
- import { ReactorBuilder, driveDocumentModelModule } from "document-drive";
4
+ import { InMemoryCache, ReactorBuilder, driveDocumentModelModule, } from "document-drive";
5
5
  import RedisCache from "document-drive/cache/redis";
6
+ import { FilesystemStorage } from "document-drive/storage/filesystem";
6
7
  import { PrismaStorageFactory } from "document-drive/storage/prisma";
7
8
  import { documentModelDocumentModelModule, } from "document-model";
8
9
  import dotenv from "dotenv";
9
10
  import express from "express";
11
+ import path from "path";
10
12
  import { initRedis } from "./clients/redis.js";
11
13
  import { initProfilerFromEnv } from "./profiler.js";
12
- import { PackagesManager } from "./utils/package-manager.js";
13
14
  dotenv.config();
14
15
  // Create a monolith express app for all subgraphs
15
16
  const app = express();
@@ -33,32 +34,29 @@ const main = async () => {
33
34
  }
34
35
  }
35
36
  try {
36
- const packages = process.env.PH_PACKAGES && process.env.PH_PACKAGES !== ""
37
- ? process.env.PH_PACKAGES.split(",")
38
- : [];
39
- const pkgManager = new PackagesManager({
40
- packages,
41
- });
42
- const { documentModels, subgraphs } = await pkgManager.init();
43
- const redis = await initRedis();
44
- const connectionString = process.env.DATABASE_URL;
45
- if (!connectionString) {
46
- throw new Error("Please set env var DATABASE_URL");
37
+ const redisUrl = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
38
+ let redis;
39
+ if (redisUrl) {
40
+ redis = await initRedis(redisUrl);
47
41
  }
42
+ const connectionString = process.env.DATABASE_URL ?? "./.ph/drive-storage";
48
43
  const dbUrl = connectionString.includes("amazonaws") &&
49
44
  !connectionString.includes("sslmode=no-verify")
50
45
  ? connectionString + "?sslmode=no-verify"
51
46
  : connectionString;
52
- const redisCache = new RedisCache(redis);
53
- const storageFactory = new PrismaStorageFactory(dbUrl, redisCache);
54
- const storage = storageFactory.build();
47
+ const cache = redis ? new RedisCache(redis) : new InMemoryCache();
48
+ const storageFactory = dbUrl.startsWith("postgresql")
49
+ ? new PrismaStorageFactory(dbUrl, cache)
50
+ : undefined;
51
+ const storage = storageFactory
52
+ ? storageFactory.build()
53
+ : new FilesystemStorage(path.join(process.cwd(), dbUrl));
55
54
  const reactor = new ReactorBuilder([
56
55
  documentModelDocumentModelModule,
57
56
  driveDocumentModelModule,
58
- ...documentModels,
59
57
  ])
60
58
  .withStorage(storage)
61
- .withCache(redisCache)
59
+ .withCache(cache)
62
60
  .build();
63
61
  // init drive server
64
62
  await reactor.initialize();
@@ -66,8 +64,8 @@ const main = async () => {
66
64
  await startAPI(reactor, {
67
65
  express: app,
68
66
  port: serverPort,
69
- dbPath: dbUrl,
70
- packages,
67
+ dbPath: dbUrl.startsWith("postgresql") ? dbUrl : "./.ph/read-storage",
68
+ configFile: path.join(process.cwd(), "powerhouse.config.json"),
71
69
  });
72
70
  }
73
71
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powerhousedao/switchboard",
3
3
  "type": "module",
4
- "version": "2.2.137",
4
+ "version": "2.2.144",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": {
7
7
  "switchboard": "dist/src/index.js"
@@ -20,11 +20,11 @@
20
20
  "express": "^4.21.2",
21
21
  "graphql": "^16.10.0",
22
22
  "redis": "^4.7.0",
23
- "@powerhousedao/config": "1.28.0",
24
- "@powerhousedao/reactor-api": "1.30.0",
25
- "@powerhousedao/scalars": "2.0.0",
26
- "document-model": "3.0.0",
27
- "document-drive": "1.30.0"
23
+ "@powerhousedao/config": "1.28.1",
24
+ "document-drive": "1.30.1",
25
+ "@powerhousedao/reactor-api": "1.31.1",
26
+ "document-model": "3.0.1",
27
+ "@powerhousedao/scalars": "2.0.1"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/express": "^5.0.0",
@@ -1,13 +1,8 @@
1
1
  import { createClient, type RedisClientType } from "redis";
2
2
 
3
3
  export let redisClient: RedisClientType;
4
- export const initRedis = async () => {
4
+ export const initRedis = async (url: string) => {
5
5
  if (!redisClient) {
6
- const url = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
7
- if (!url) {
8
- throw new Error("REDIS_TLS_URL is not set");
9
- }
10
-
11
6
  const socket = url.includes("rediss")
12
7
  ? {
13
8
  tls: true,
package/src/index.ts CHANGED
@@ -1,8 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { startAPI } from "@powerhousedao/reactor-api";
3
3
  import * as Sentry from "@sentry/node";
4
- import { ReactorBuilder, driveDocumentModelModule } from "document-drive";
4
+ import {
5
+ InMemoryCache,
6
+ ReactorBuilder,
7
+ driveDocumentModelModule,
8
+ } from "document-drive";
5
9
  import RedisCache from "document-drive/cache/redis";
10
+ import { FilesystemStorage } from "document-drive/storage/filesystem";
6
11
  import { PrismaStorageFactory } from "document-drive/storage/prisma";
7
12
  import {
8
13
  type DocumentModelModule,
@@ -10,9 +15,10 @@ import {
10
15
  } from "document-model";
11
16
  import dotenv from "dotenv";
12
17
  import express from "express";
18
+ import path from "path";
19
+ import { type RedisClientType } from "redis";
13
20
  import { initRedis } from "./clients/redis.js";
14
21
  import { initProfilerFromEnv } from "./profiler.js";
15
- import { PackagesManager } from "./utils/package-manager.js";
16
22
 
17
23
  dotenv.config();
18
24
 
@@ -42,36 +48,32 @@ const main = async () => {
42
48
  }
43
49
 
44
50
  try {
45
- const packages =
46
- process.env.PH_PACKAGES && process.env.PH_PACKAGES !== ""
47
- ? process.env.PH_PACKAGES.split(",")
48
- : [];
49
- const pkgManager = new PackagesManager({
50
- packages,
51
- });
52
- const { documentModels, subgraphs } = await pkgManager.init();
53
- const redis = await initRedis();
54
- const connectionString = process.env.DATABASE_URL;
55
- if (!connectionString) {
56
- throw new Error("Please set env var DATABASE_URL");
51
+ const redisUrl = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
52
+ let redis: RedisClientType | undefined;
53
+ if (redisUrl) {
54
+ redis = await initRedis(redisUrl);
57
55
  }
56
+ const connectionString = process.env.DATABASE_URL ?? "./.ph/drive-storage";
58
57
  const dbUrl =
59
58
  connectionString.includes("amazonaws") &&
60
59
  !connectionString.includes("sslmode=no-verify")
61
60
  ? connectionString + "?sslmode=no-verify"
62
61
  : connectionString;
63
62
 
64
- const redisCache = new RedisCache(redis);
65
- const storageFactory = new PrismaStorageFactory(dbUrl, redisCache);
66
- const storage = storageFactory.build();
63
+ const cache = redis ? new RedisCache(redis) : new InMemoryCache();
64
+ const storageFactory = dbUrl.startsWith("postgresql")
65
+ ? new PrismaStorageFactory(dbUrl, cache)
66
+ : undefined;
67
+ const storage = storageFactory
68
+ ? storageFactory.build()
69
+ : new FilesystemStorage(path.join(process.cwd(), dbUrl));
67
70
 
68
71
  const reactor = new ReactorBuilder([
69
72
  documentModelDocumentModelModule,
70
73
  driveDocumentModelModule,
71
- ...documentModels,
72
74
  ] as DocumentModelModule[])
73
75
  .withStorage(storage)
74
- .withCache(redisCache)
76
+ .withCache(cache)
75
77
  .build();
76
78
 
77
79
  // init drive server
@@ -81,8 +83,8 @@ const main = async () => {
81
83
  await startAPI(reactor, {
82
84
  express: app,
83
85
  port: serverPort,
84
- dbPath: dbUrl,
85
- packages,
86
+ dbPath: dbUrl.startsWith("postgresql") ? dbUrl : "./.ph/read-storage",
87
+ configFile: path.join(process.cwd(), "powerhouse.config.json"),
86
88
  });
87
89
  } catch (e) {
88
90
  Sentry.captureException(e);