diff --git a/src/core/server/app/index.ts b/src/core/server/app/index.ts index a6c853222..a34cf328f 100644 --- a/src/core/server/app/index.ts +++ b/src/core/server/app/index.ts @@ -13,12 +13,12 @@ import { HTMLErrorHandler } from "coral-server/app/middleware/error"; import { notFoundMiddleware } from "coral-server/app/middleware/notFound"; import { createPassport } from "coral-server/app/middleware/passport"; import { Config } from "coral-server/config"; -import { PersistedQueryCache } from "coral-server/models/queries"; import { MailerQueue } from "coral-server/queue/tasks/mailer"; import { ScraperQueue } from "coral-server/queue/tasks/scraper"; import { I18n } from "coral-server/services/i18n"; import { JWTSigningConfig } from "coral-server/services/jwt"; import { Metrics } from "coral-server/services/metrics"; +import { PersistedQueryCache } from "coral-server/services/queries"; import { AugmentedRedis } from "coral-server/services/redis"; import TenantCache from "coral-server/services/tenant/cache"; diff --git a/src/core/server/graph/tenant/persisted/loader.ts b/src/core/server/graph/tenant/persisted/loader.ts index 58bfb2bd9..63c8dcb0e 100644 --- a/src/core/server/graph/tenant/persisted/loader.ts +++ b/src/core/server/graph/tenant/persisted/loader.ts @@ -4,11 +4,21 @@ import path from "path"; import { version } from "coral-common/version"; import { getOperationMetadata } from "coral-server/graph/common/extensions/helpers"; +import logger from "coral-server/logger"; import { PersistedQuery } from "coral-server/models/queries"; -export function loadPersistedQueries() { - // Load the files in the persisted queries folder. +export function loadPersistedQueries(): PersistedQuery[] { + // Check to see if we have a persisted queries folder. const dir = path.join(__dirname, "__generated__"); + if (!fs.pathExistsSync(dir)) { + logger.warn( + { dir }, + "persisted queries not loaded, dir not found; did you run `npm run generate-persist`?" + ); + return []; + } + + // Load the files in the persisted queries folder. const files = fs.readdirSync(dir); // Load each of the persisted queries. @@ -52,5 +62,7 @@ export function loadPersistedQueries() { } } + logger.info({ queries: queries.length }, "loaded persisted queries"); + return queries; } diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 7a64016be..50e0a41ba 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -19,13 +19,13 @@ import { createPubSubClient } from "coral-server/graph/common/subscriptions/pubs import getTenantSchema from "coral-server/graph/tenant/schema"; import { createSubscriptionServer } from "coral-server/graph/tenant/subscriptions/server"; import logger from "coral-server/logger"; -import { PersistedQueryCache } from "coral-server/models/queries"; import { createQueue, TaskQueue } from "coral-server/queue"; import { I18n } from "coral-server/services/i18n"; import { createJWTSigningConfig } from "coral-server/services/jwt"; import { createMetrics } from "coral-server/services/metrics"; import { createMongoDB } from "coral-server/services/mongodb"; import { ensureIndexes } from "coral-server/services/mongodb/indexes"; +import { PersistedQueryCache } from "coral-server/services/queries"; import { AugmentedRedis, createAugmentedRedisClient, @@ -267,14 +267,6 @@ class Server { // Prime the queries in the database. await persistedQueryCache.prime(); - logger.info( - { queries: persistedQueryCache.size }, - "loaded persisted queries" - ); - if (persistedQueryCache.size === 0) { - logger.warn("no persisted queries loaded, did you run `npm run build`?"); - } - const options: AppOptions = { parent, pubsub: this.pubsub, diff --git a/src/core/server/models/queries/index.ts b/src/core/server/models/queries/index.ts index 7723b008a..b69c25120 100644 --- a/src/core/server/models/queries/index.ts +++ b/src/core/server/models/queries/index.ts @@ -1,2 +1 @@ -export * from "./cache"; export * from "./queries"; diff --git a/src/core/server/models/queries/queries.ts b/src/core/server/models/queries/queries.ts index 9adc229e8..9274e3502 100644 --- a/src/core/server/models/queries/queries.ts +++ b/src/core/server/models/queries/queries.ts @@ -1,10 +1,11 @@ import { Db } from "mongodb"; -import { createIndexFactory } from "../helpers/indexing"; +import { + createCollection, + createIndexFactory, +} from "coral-server/models/helpers"; -function collection(mongo: Db) { - return mongo.collection>("queries"); -} +const collection = createCollection>("queries"); export interface PersistedQuery { id: string; diff --git a/src/core/server/models/queries/cache.ts b/src/core/server/services/queries/cache.ts similarity index 96% rename from src/core/server/models/queries/cache.ts rename to src/core/server/services/queries/cache.ts index 3855d3a23..1b8b888dc 100644 --- a/src/core/server/models/queries/cache.ts +++ b/src/core/server/services/queries/cache.ts @@ -4,8 +4,11 @@ import { Db } from "mongodb"; import { loadPersistedQueries } from "coral-server/graph/tenant/persisted"; import logger from "coral-server/logger"; - -import { getQueries, PersistedQuery, primeQueries } from "./queries"; +import { + getQueries, + PersistedQuery, + primeQueries, +} from "coral-server/models/queries/queries"; interface PersistedQueryCacheOptions { mongo: Db; diff --git a/src/core/server/services/queries/index.ts b/src/core/server/services/queries/index.ts new file mode 100644 index 000000000..9e68ce0e8 --- /dev/null +++ b/src/core/server/services/queries/index.ts @@ -0,0 +1 @@ +export * from "./cache";