From 84bbc3d0c35053c3498db0e4074782fd168632a3 Mon Sep 17 00:00:00 2001 From: Nick Funk Date: Wed, 8 Jan 2020 10:07:25 -0700 Subject: [PATCH] [CORL-688] Refactor: Consolidate the tenant and common context together (#2780) * feat: initial impl * Create preliminary comment moderation slices CORL-688 * Move slices logic into stacks CORL-688 * Create user comment counts CORL-688 * Create naive mutation that initializes user comment counts CORL-688 * Use bulk updates in user counts migration CORL-688 * fix: review * fix: fixed issue with aggregation * Migrate creating comment into stacks CORL-688 * Migrate editing a comment to the stacks CORL-688 * Break publishing comment status out of updateAllCounts CORL-688 * review: removed variable scoping in favor of export * revert: feb8e8196cd448f5cd24f1ca2eb0b91fe9bd43c7 * review: simplification of stacks implementation This simplifies the stacks implementation to better reuse code related to count management and event publishing. This can be used to great effect with the upcomming events PR #2738. * Consolidate the tenant and common context together CORL-688 * review: removed variable scoping in favor of export * revert: feb8e8196cd448f5cd24f1ca2eb0b91fe9bd43c7 * review: simplification of stacks implementation This simplifies the stacks implementation to better reuse code related to count management and event publishing. This can be used to great effect with the upcomming events PR #2738. * fix: check if authorID is null before update user counts CORL-688 * Consolidate common/tenant context supporting files CORL-688 * feat: renamed TenantContext -> GraphContext Co-authored-by: Wyatt Johnson --- .graphqlconfig | 2 +- package.json | 4 +- scripts/compileRelay.ts | 2 +- scripts/generateSchemaTypes.js | 6 +- .../app/handlers/api/account/confirm.ts | 2 +- .../app/handlers/api/auth/local/signup.ts | 2 +- src/core/server/app/handlers/api/graphql.ts | 8 +- src/core/server/app/handlers/api/install.ts | 2 +- .../middleware/graphql/graphqlMiddleware.ts | 2 +- .../graphql/persistedQueryMiddleware.ts | 4 +- .../passport/strategies/facebook.ts | 2 +- .../middleware/passport/strategies/google.ts | 2 +- .../passport/strategies/oidc/index.ts | 2 +- .../passport/strategies/verifiers/sso.ts | 2 +- src/core/server/cron/notificationDigesting.ts | 2 +- src/core/server/errors/index.ts | 2 +- src/core/server/graph/common/context.ts | 80 ------------ .../server/graph/common/resolvers/mutation.ts | 3 - src/core/server/graph/context.ts | 118 ++++++++++++++++++ .../graph/{common => }/directives/auth.ts | 6 +- .../{common => }/directives/constraint.ts | 0 .../graph/{common => }/directives/helpers.ts | 0 .../graph/{tenant => }/directives/rate.ts | 6 +- src/core/server/graph/{common => }/errors.ts | 0 .../extensions/ErrorWrappingExtension.ts | 17 ++- .../extensions/LoggerExtension.ts | 10 +- .../extensions/MetricsExtension.ts | 4 +- .../graph/{common => }/extensions/helpers.ts | 0 .../graph/{common => }/extensions/index.ts | 0 .../server/graph/{tenant => }/loaders/Auth.ts | 6 +- .../{tenant => }/loaders/CommentActions.ts | 2 +- .../loaders/CommentModerationActions.ts | 6 +- .../graph/{tenant => }/loaders/Comments.ts | 4 +- .../graph/{tenant => }/loaders/Stories.ts | 8 +- .../graph/{tenant => }/loaders/Users.ts | 4 +- .../graph/{tenant => }/loaders/index.ts | 2 +- .../server/graph/{tenant => }/loaders/util.ts | 0 .../graph/{tenant => }/mutators/Actions.ts | 4 +- .../graph/{tenant => }/mutators/Comments.ts | 8 +- .../graph/{tenant => }/mutators/Settings.ts | 6 +- .../graph/{tenant => }/mutators/Stories.ts | 27 ++-- .../graph/{tenant => }/mutators/Users.ts | 7 +- .../graph/{tenant => }/mutators/index.ts | 4 +- .../graph/{tenant => }/mutators/util.spec.ts | 0 .../graph/{tenant => }/mutators/util.ts | 0 .../graph/{common => }/persisted/index.ts | 0 .../graph/{common => }/persisted/loader.ts | 2 +- .../graph/{common => }/persisted/mapper.ts | 0 .../resolvers/ApproveCommentPayload.ts | 2 +- .../resolvers/AuthIntegrations.ts | 2 +- .../graph/{tenant => }/resolvers/BanStatus.ts | 2 +- .../resolvers/BanStatusHistory.ts | 2 +- .../{tenant => }/resolvers/CloseCommenting.ts | 2 +- .../graph/{tenant => }/resolvers/Comment.ts | 17 +-- .../{tenant => }/resolvers/CommentCounts.ts | 2 +- .../resolvers/CommentCreatedPayload.ts | 2 +- .../CommentEnteredModerationQueuePayload.ts | 2 +- .../CommentLeftModerationQueuePayload.ts | 2 +- .../resolvers/CommentModerationAction.ts | 0 .../resolvers/CommentReleasedPayload.ts | 2 +- .../resolvers/CommentReplyCreatedPayload.ts | 2 +- .../{tenant => }/resolvers/CommentRevision.ts | 2 +- .../resolvers/CommentStatusUpdatedPayload.ts | 2 +- .../resolvers/DisableCommenting.ts | 2 +- .../resolvers/FacebookAuthIntegration.ts | 2 +- .../resolvers/FeatureCommentPayload.ts | 2 +- .../graph/{tenant => }/resolvers/Flag.ts | 2 +- .../resolvers/GoogleAuthIntegration.ts | 2 +- .../graph/{tenant => }/resolvers/Invite.ts | 2 +- .../resolvers/LiveConfiguration.ts | 2 +- .../{tenant => }/resolvers/ModerationQueue.ts | 0 .../resolvers/ModerationQueues.ts | 17 +-- .../{tenant => }/resolvers/ModeratorNote.ts | 2 +- .../graph/{tenant => }/resolvers/Mutation.ts | 2 +- .../resolvers/OIDCAuthIntegration.ts | 2 +- .../{tenant => }/resolvers/PremodStatus.ts | 2 +- .../resolvers/PremodStatusHistory.ts | 2 +- .../graph/{tenant => }/resolvers/Profile.ts | 2 +- .../graph/{tenant => }/resolvers/Query.ts | 2 +- .../resolvers/RecentCommentHistory.ts | 2 +- .../resolvers/RejectCommentPayload.ts | 2 +- .../resolvers/SSOAuthIntegration.ts | 2 +- .../graph/{tenant => }/resolvers/Settings.ts | 2 +- .../resolvers/SlackConfiguration.ts | 2 +- .../graph/{tenant => }/resolvers/Story.ts | 6 +- .../{tenant => }/resolvers/StorySettings.ts | 0 .../resolvers/Subscription/commentCreated.ts | 2 +- .../commentEnteredModerationQueue.ts | 2 +- .../resolvers/Subscription/commentFeatured.ts | 2 +- .../commentLeftModerationQueue.ts | 2 +- .../resolvers/Subscription/commentReleased.ts | 2 +- .../Subscription/commentReplyCreated.ts | 2 +- .../Subscription/commentStatusUpdated.ts | 2 +- .../resolvers/Subscription/helpers.ts | 12 +- .../resolvers/Subscription/index.ts | 2 +- .../resolvers/Subscription/types.ts | 0 .../resolvers/SuspensionStatus.ts | 2 +- .../resolvers/SuspensionStatusHistory.ts | 2 +- .../graph/{tenant => }/resolvers/Tag.ts | 2 +- .../graph/{tenant => }/resolvers/User.ts | 6 +- .../{tenant => }/resolvers/UserStatus.ts | 2 +- .../{tenant => }/resolvers/UsernameHistory.ts | 2 +- .../{tenant => }/resolvers/UsernameStatus.ts | 2 +- .../graph/{tenant => }/resolvers/index.ts | 8 +- .../graph/{tenant => }/resolvers/util.ts | 4 +- .../graph/{common => }/scalars/cursor.spec.ts | 0 .../graph/{common => }/scalars/cursor.ts | 0 .../graph/{common => }/scalars/locale.spec.ts | 0 .../graph/{common => }/scalars/locale.ts | 0 .../server/graph/{common => }/scalars/time.ts | 0 .../server/graph/{tenant => }/schema/index.ts | 8 +- .../graph/{tenant => }/schema/schema.graphql | 0 .../graph/{tenant => }/schema/schema.spec.ts | 2 +- .../{tenant => }/subscriptions/publisher.ts | 4 +- .../{common => }/subscriptions/pubsub.ts | 0 .../{tenant => }/subscriptions/server.ts | 26 ++-- src/core/server/graph/tenant/context.ts | 76 ----------- src/core/server/index.ts | 7 +- src/core/server/models/action/comment.spec.ts | 2 +- src/core/server/models/action/comment.ts | 2 +- .../models/action/moderation/comment.ts | 2 +- src/core/server/models/comment/comment.ts | 2 +- src/core/server/models/comment/constants.ts | 2 +- src/core/server/models/comment/helpers.ts | 2 +- src/core/server/models/comment/tag.ts | 2 +- src/core/server/models/invite.ts | 2 +- src/core/server/models/settings.ts | 2 +- src/core/server/models/story/counts/index.ts | 2 +- src/core/server/models/story/index.ts | 2 +- src/core/server/models/tenant/helpers.ts | 2 +- src/core/server/models/tenant/tenant.ts | 2 +- src/core/server/models/user/constants.ts | 2 +- src/core/server/models/user/helpers.ts | 2 +- src/core/server/models/user/user.ts | 6 +- src/core/server/queue/tasks/notifier/index.ts | 2 +- .../server/queue/tasks/notifier/messages.ts | 4 +- .../server/queue/tasks/notifier/processor.ts | 2 +- src/core/server/services/comments/actions.ts | 4 +- src/core/server/services/comments/comments.ts | 2 +- .../comments/moderation/counts.spec.ts | 2 +- .../services/comments/moderation/counts.ts | 2 +- .../comments/pipeline/phases/detectLinks.ts | 2 +- .../comments/pipeline/phases/preModerate.ts | 2 +- .../pipeline/phases/preModerateUser.ts | 2 +- .../pipeline/phases/premodNewCommenter.ts | 2 +- .../pipeline/phases/recentCommentHistory.ts | 2 +- .../comments/pipeline/phases/repeatPost.ts | 2 +- .../services/comments/pipeline/phases/spam.ts | 2 +- .../comments/pipeline/phases/staff.ts | 2 +- .../comments/pipeline/phases/toxic.ts | 2 +- .../comments/pipeline/phases/wordList.ts | 2 +- .../comments/pipeline/pipeline.spec.ts | 2 +- .../services/comments/pipeline/pipeline.ts | 2 +- src/core/server/services/events/comments.ts | 6 +- .../migrations/1573073491825_sso_tokens.ts | 2 +- .../1575649180_user_comment_counts.ts | 2 +- .../notifications/categories/category.ts | 2 +- .../notifications/categories/featured.ts | 4 +- .../notifications/categories/moderation.ts | 6 +- .../notifications/categories/reply.ts | 6 +- .../notifications/categories/staffReply.ts | 6 +- .../server/services/notifications/context.ts | 2 +- src/core/server/services/queries/cache.ts | 2 +- src/core/server/services/slack/publisher.ts | 18 +-- .../services/stories/scraper/scraper.ts | 2 +- src/core/server/services/tenant/index.ts | 2 +- src/core/server/services/users/auth/invite.ts | 2 +- src/core/server/services/users/users.ts | 2 +- src/core/server/stacks/approveComment.ts | 4 +- src/core/server/stacks/createComment.ts | 2 +- src/core/server/stacks/editComment.ts | 2 +- .../server/stacks/helpers/publishChanges.ts | 2 +- src/core/server/stacks/rejectComment.ts | 4 +- 173 files changed, 386 insertions(+), 435 deletions(-) delete mode 100644 src/core/server/graph/common/context.ts delete mode 100644 src/core/server/graph/common/resolvers/mutation.ts create mode 100644 src/core/server/graph/context.ts rename src/core/server/graph/{common => }/directives/auth.ts (96%) rename src/core/server/graph/{common => }/directives/constraint.ts (100%) rename src/core/server/graph/{common => }/directives/helpers.ts (100%) rename src/core/server/graph/{tenant => }/directives/rate.ts (92%) rename src/core/server/graph/{common => }/errors.ts (100%) rename src/core/server/graph/{common => }/extensions/ErrorWrappingExtension.ts (89%) rename src/core/server/graph/{common => }/extensions/LoggerExtension.ts (88%) rename src/core/server/graph/{common => }/extensions/MetricsExtension.ts (90%) rename src/core/server/graph/{common => }/extensions/helpers.ts (100%) rename src/core/server/graph/{common => }/extensions/index.ts (100%) rename src/core/server/graph/{tenant => }/loaders/Auth.ts (78%) rename src/core/server/graph/{tenant => }/loaders/CommentActions.ts (87%) rename src/core/server/graph/{tenant => }/loaders/CommentModerationActions.ts (82%) rename src/core/server/graph/{tenant => }/loaders/Comments.ts (98%) rename src/core/server/graph/{tenant => }/loaders/Stories.ts (93%) rename src/core/server/graph/{tenant => }/loaders/Users.ts (96%) rename src/core/server/graph/{tenant => }/loaders/index.ts (89%) rename src/core/server/graph/{tenant => }/loaders/util.ts (100%) rename src/core/server/graph/{tenant => }/mutators/Actions.ts (85%) rename src/core/server/graph/{tenant => }/mutators/Comments.ts (95%) rename src/core/server/graph/{tenant => }/mutators/Settings.ts (84%) rename src/core/server/graph/{tenant => }/mutators/Stories.ts (89%) rename src/core/server/graph/{tenant => }/mutators/Users.ts (97%) rename src/core/server/graph/{tenant => }/mutators/index.ts (75%) rename src/core/server/graph/{tenant => }/mutators/util.spec.ts (100%) rename src/core/server/graph/{tenant => }/mutators/util.ts (100%) rename src/core/server/graph/{common => }/persisted/index.ts (100%) rename src/core/server/graph/{common => }/persisted/loader.ts (95%) rename src/core/server/graph/{common => }/persisted/mapper.ts (100%) rename src/core/server/graph/{tenant => }/resolvers/ApproveCommentPayload.ts (85%) rename src/core/server/graph/{tenant => }/resolvers/AuthIntegrations.ts (86%) rename src/core/server/graph/{tenant => }/resolvers/BanStatus.ts (77%) rename src/core/server/graph/{tenant => }/resolvers/BanStatusHistory.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/CloseCommenting.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Comment.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/CommentCounts.ts (93%) rename src/core/server/graph/{tenant => }/resolvers/CommentCreatedPayload.ts (89%) rename src/core/server/graph/{tenant => }/resolvers/CommentEnteredModerationQueuePayload.ts (88%) rename src/core/server/graph/{tenant => }/resolvers/CommentLeftModerationQueuePayload.ts (88%) rename src/core/server/graph/{tenant => }/resolvers/CommentModerationAction.ts (100%) rename src/core/server/graph/{tenant => }/resolvers/CommentReleasedPayload.ts (89%) rename src/core/server/graph/{tenant => }/resolvers/CommentReplyCreatedPayload.ts (88%) rename src/core/server/graph/{tenant => }/resolvers/CommentRevision.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/CommentStatusUpdatedPayload.ts (91%) rename src/core/server/graph/{tenant => }/resolvers/DisableCommenting.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/FacebookAuthIntegration.ts (86%) rename src/core/server/graph/{tenant => }/resolvers/FeatureCommentPayload.ts (85%) rename src/core/server/graph/{tenant => }/resolvers/Flag.ts (90%) rename src/core/server/graph/{tenant => }/resolvers/GoogleAuthIntegration.ts (85%) rename src/core/server/graph/{tenant => }/resolvers/Invite.ts (68%) rename src/core/server/graph/{tenant => }/resolvers/LiveConfiguration.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/ModerationQueue.ts (100%) rename src/core/server/graph/{tenant => }/resolvers/ModerationQueues.ts (96%) rename src/core/server/graph/{tenant => }/resolvers/ModeratorNote.ts (91%) rename src/core/server/graph/{tenant => }/resolvers/Mutation.ts (98%) rename src/core/server/graph/{tenant => }/resolvers/OIDCAuthIntegration.ts (85%) rename src/core/server/graph/{tenant => }/resolvers/PremodStatus.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/PremodStatusHistory.ts (91%) rename src/core/server/graph/{tenant => }/resolvers/Profile.ts (85%) rename src/core/server/graph/{tenant => }/resolvers/Query.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/RecentCommentHistory.ts (88%) rename src/core/server/graph/{tenant => }/resolvers/RejectCommentPayload.ts (85%) rename src/core/server/graph/{tenant => }/resolvers/SSOAuthIntegration.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Settings.ts (90%) rename src/core/server/graph/{tenant => }/resolvers/SlackConfiguration.ts (83%) rename src/core/server/graph/{tenant => }/resolvers/Story.ts (88%) rename src/core/server/graph/{tenant => }/resolvers/StorySettings.ts (100%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentCreated.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentEnteredModerationQueue.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentFeatured.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentLeftModerationQueue.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentReleased.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentReplyCreated.ts (93%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/commentStatusUpdated.ts (93%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/helpers.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/index.ts (95%) rename src/core/server/graph/{tenant => }/resolvers/Subscription/types.ts (100%) rename src/core/server/graph/{tenant => }/resolvers/SuspensionStatus.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/SuspensionStatusHistory.ts (94%) rename src/core/server/graph/{tenant => }/resolvers/Tag.ts (76%) rename src/core/server/graph/{tenant => }/resolvers/User.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/UserStatus.ts (96%) rename src/core/server/graph/{tenant => }/resolvers/UsernameHistory.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/UsernameStatus.ts (91%) rename src/core/server/graph/{tenant => }/resolvers/index.ts (92%) rename src/core/server/graph/{tenant => }/resolvers/util.ts (86%) rename src/core/server/graph/{common => }/scalars/cursor.spec.ts (100%) rename src/core/server/graph/{common => }/scalars/cursor.ts (100%) rename src/core/server/graph/{common => }/scalars/locale.spec.ts (100%) rename src/core/server/graph/{common => }/scalars/locale.ts (100%) rename src/core/server/graph/{common => }/scalars/time.ts (100%) rename src/core/server/graph/{tenant => }/schema/index.ts (65%) rename src/core/server/graph/{tenant => }/schema/schema.graphql (100%) rename src/core/server/graph/{tenant => }/schema/schema.spec.ts (91%) rename src/core/server/graph/{tenant => }/subscriptions/publisher.ts (93%) rename src/core/server/graph/{common => }/subscriptions/pubsub.ts (100%) rename src/core/server/graph/{tenant => }/subscriptions/server.ts (92%) delete mode 100644 src/core/server/graph/tenant/context.ts diff --git a/.graphqlconfig b/.graphqlconfig index a1c42c4ed..3737c2734 100644 --- a/.graphqlconfig +++ b/.graphqlconfig @@ -1,7 +1,7 @@ { "projects": { "tenant": { - "schemaPath": "src/core/server/graph/tenant/schema/schema.graphql" + "schemaPath": "src/core/server/graph/schema/schema.graphql" } } } diff --git a/package.json b/package.json index 428038b3b..8db1eb005 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "lint:server": "eslint 'src/**/*.{js,ts,tsx}' --ignore-pattern 'src/core/client/**'", "lint:client": "eslint 'src/core/client/**/*.{js,ts,tsx}'", "lint:scripts": "eslint 'scripts/**/*.{js,ts,tsx}'", - "lint:graphql": "graphql-schema-linter src/core/server/graph/tenant/schema/schema.graphql", + "lint:graphql": "graphql-schema-linter src/core/server/graph/schema/schema.graphql", "lint-fix": "npm run lint:server -- --fix && npm run lint:client -- --fix && npm run lint:scripts -- --fix", "test": "node --trace-warnings scripts/test.js --env=jsdom", "tscheck": "npm-run-all --parallel tscheck:*", @@ -394,7 +394,7 @@ "*.{j,t}s{,x}": [ "eslint" ], - "src/core/server/graph/tenant/schema/schema.graphql": [ + "src/core/server/graph/schema/schema.graphql": [ "graphql-schema-linter" ], "{src/core/client/stream/events.ts,scripts/generateEventDocs.ts,events.md}": [ diff --git a/scripts/compileRelay.ts b/scripts/compileRelay.ts index 688544070..4ffe58eb8 100644 --- a/scripts/compileRelay.ts +++ b/scripts/compileRelay.ts @@ -74,7 +74,7 @@ if (persist) { if (fs.existsSync(persist)) { // Create the new filename. const name = path.basename(program.src); - const generated = "./src/core/server/graph/common/persisted/__generated__"; + const generated = "./src/core/server/graph/persisted/__generated__"; // Create the generated directory if it doesn't exist. fs.ensureDirSync(generated); diff --git a/scripts/generateSchemaTypes.js b/scripts/generateSchemaTypes.js index ac1c6b4a7..425713c99 100644 --- a/scripts/generateSchemaTypes.js +++ b/scripts/generateSchemaTypes.js @@ -12,12 +12,12 @@ async function main() { name: "tenant", fileName: path.join( __dirname, - "../src/core/server/graph/tenant/schema/__generated__/types.ts" + "../src/core/server/graph/schema/__generated__/types.ts" ), config: { - contextType: "TenantContext", + contextType: "GraphContext", importStatements: [ - 'import TenantContext from "coral-server/graph/tenant/context";', + 'import GraphContext from "coral-server/graph/context";', 'import { Cursor } from "coral-server/models/helpers";', ], customScalarType: { Cursor: "Cursor", Time: "Date" }, diff --git a/src/core/server/app/handlers/api/account/confirm.ts b/src/core/server/app/handlers/api/account/confirm.ts index 876e4eccd..6e181fbcd 100644 --- a/src/core/server/app/handlers/api/account/confirm.ts +++ b/src/core/server/app/handlers/api/account/confirm.ts @@ -8,7 +8,7 @@ import { UserForbiddenError, UserNotFoundError, } from "coral-server/errors"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { retrieveUser, User } from "coral-server/models/user"; import { decodeJWT, extractTokenFromRequest } from "coral-server/services/jwt"; import { diff --git a/src/core/server/app/handlers/api/auth/local/signup.ts b/src/core/server/app/handlers/api/auth/local/signup.ts index f43d3d66c..ee7d6b2b7 100644 --- a/src/core/server/app/handlers/api/auth/local/signup.ts +++ b/src/core/server/app/handlers/api/auth/local/signup.ts @@ -6,7 +6,7 @@ import { handleSuccessfulLogin } from "coral-server/app/middleware/passport"; import { validate } from "coral-server/app/request/body"; import { RequestLimiter } from "coral-server/app/request/limiter"; import { IntegrationDisabled } from "coral-server/errors"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { LocalProfile, User } from "coral-server/models/user"; import { create } from "coral-server/services/users"; import { sendConfirmationEmail } from "coral-server/services/users/auth"; diff --git a/src/core/server/app/handlers/api/graphql.ts b/src/core/server/app/handlers/api/graphql.ts index 12d35c99f..3efb12ed8 100644 --- a/src/core/server/app/handlers/api/graphql.ts +++ b/src/core/server/app/handlers/api/graphql.ts @@ -1,9 +1,7 @@ import { CLIENT_ID_HEADER } from "coral-common/constants"; import { AppOptions } from "coral-server/app"; import { graphqlMiddleware } from "coral-server/app/middleware/graphql"; -import TenantContext, { - TenantContextOptions, -} from "coral-server/graph/tenant/context"; +import GraphContext, { GraphContextOptions } from "coral-server/graph/context"; import { Request, RequestHandler } from "coral-server/types/express"; export type GraphMiddlewareOptions = Pick< @@ -47,7 +45,7 @@ export const graphQLHandler = ({ } // Create some new options to store the tenant context details inside. - const opts: TenantContextOptions = { + const opts: GraphContextOptions = { ...options, id, now, @@ -72,7 +70,7 @@ export const graphQLHandler = ({ return { schema, - context: new TenantContext(opts), + context: new GraphContext(opts), }; }, metrics diff --git a/src/core/server/app/handlers/api/install.ts b/src/core/server/app/handlers/api/install.ts index e7de68574..709d019d4 100644 --- a/src/core/server/app/handlers/api/install.ts +++ b/src/core/server/app/handlers/api/install.ts @@ -26,7 +26,7 @@ import { import { create, CreateUser } from "coral-server/services/users"; import { Request, RequestHandler } from "coral-server/types/express"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; export type TenantInstallCheckHandlerOptions = Pick< AppOptions, diff --git a/src/core/server/app/middleware/graphql/graphqlMiddleware.ts b/src/core/server/app/middleware/graphql/graphqlMiddleware.ts index e0ecba4d3..b61c82020 100644 --- a/src/core/server/app/middleware/graphql/graphqlMiddleware.ts +++ b/src/core/server/app/middleware/graphql/graphqlMiddleware.ts @@ -14,7 +14,7 @@ import { ErrorWrappingExtension, LoggerExtension, MetricsExtension, -} from "coral-server/graph/common/extensions"; +} from "coral-server/graph/extensions"; import { Metrics } from "coral-server/services/metrics"; // Sourced from: https://github.com/apollographql/apollo-server/blob/958846887598491fadea57b3f9373d129300f250/packages/apollo-server-core/src/ApolloServer.ts#L46-L57 diff --git a/src/core/server/app/middleware/graphql/persistedQueryMiddleware.ts b/src/core/server/app/middleware/graphql/persistedQueryMiddleware.ts index 855df0375..fbf25d446 100644 --- a/src/core/server/app/middleware/graphql/persistedQueryMiddleware.ts +++ b/src/core/server/app/middleware/graphql/persistedQueryMiddleware.ts @@ -1,7 +1,7 @@ import { AppOptions } from "coral-server/app"; import { RawQueryNotAuthorized } from "coral-server/errors"; -import { getPersistedQuery } from "coral-server/graph/common/persisted"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { getPersistedQuery } from "coral-server/graph/persisted"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { RequestHandler } from "coral-server/types/express"; type PersistedQueryMiddlewareOptions = Pick< diff --git a/src/core/server/app/middleware/passport/strategies/facebook.ts b/src/core/server/app/middleware/passport/strategies/facebook.ts index 74d999b25..0222e03fb 100644 --- a/src/core/server/app/middleware/passport/strategies/facebook.ts +++ b/src/core/server/app/middleware/passport/strategies/facebook.ts @@ -15,7 +15,7 @@ import { } from "coral-server/models/user"; import { findOrCreate } from "coral-server/services/users"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; export type FacebookStrategyOptions = OAuth2StrategyOptions; diff --git a/src/core/server/app/middleware/passport/strategies/google.ts b/src/core/server/app/middleware/passport/strategies/google.ts index 96d81d093..8d2f81c65 100644 --- a/src/core/server/app/middleware/passport/strategies/google.ts +++ b/src/core/server/app/middleware/passport/strategies/google.ts @@ -15,7 +15,7 @@ import { } from "coral-server/models/user"; import { findOrCreate } from "coral-server/services/users"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; export type GoogleStrategyOptions = OAuth2StrategyOptions; diff --git a/src/core/server/app/middleware/passport/strategies/oidc/index.ts b/src/core/server/app/middleware/passport/strategies/oidc/index.ts index fba8a4d8b..627b870bb 100644 --- a/src/core/server/app/middleware/passport/strategies/oidc/index.ts +++ b/src/core/server/app/middleware/passport/strategies/oidc/index.ts @@ -29,7 +29,7 @@ import { findOrCreate } from "coral-server/services/users"; import { validateUsername } from "coral-server/services/users/helpers"; import { Request } from "coral-server/types/express"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; export interface Params { id_token?: string; diff --git a/src/core/server/app/middleware/passport/strategies/verifiers/sso.ts b/src/core/server/app/middleware/passport/strategies/verifiers/sso.ts index 74e7f1a46..6aca55b69 100644 --- a/src/core/server/app/middleware/passport/strategies/verifiers/sso.ts +++ b/src/core/server/app/middleware/passport/strategies/verifiers/sso.ts @@ -27,7 +27,7 @@ import { findOrCreate } from "coral-server/services/users"; import { GQLSSOAuthIntegration, GQLUSER_ROLE, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { Verifier } from "../jwt"; diff --git a/src/core/server/cron/notificationDigesting.ts b/src/core/server/cron/notificationDigesting.ts index f56cab314..d1d6aa711 100644 --- a/src/core/server/cron/notificationDigesting.ts +++ b/src/core/server/cron/notificationDigesting.ts @@ -2,7 +2,7 @@ import { Db } from "mongodb"; import path from "path"; import { Config } from "coral-server/config"; -import { GQLDIGEST_FREQUENCY } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLDIGEST_FREQUENCY } from "coral-server/graph/schema/__generated__/types"; import { MailerQueue } from "coral-server/queue/tasks/mailer"; import { DigestibleTemplate } from "coral-server/queue/tasks/mailer/templates"; import { JWTSigningConfig } from "coral-server/services/jwt"; diff --git a/src/core/server/errors/index.ts b/src/core/server/errors/index.ts index 24e64516a..d7c95d158 100644 --- a/src/core/server/errors/index.ts +++ b/src/core/server/errors/index.ts @@ -11,7 +11,7 @@ import { reduceSeconds, UNIT } from "coral-common/helpers/i18n"; import { translate } from "coral-server/services/i18n"; import { Writable } from "coral-common/types"; -import { GQLUSER_AUTH_CONDITIONS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_AUTH_CONDITIONS } from "coral-server/graph/schema/__generated__/types"; import { ERROR_TRANSLATIONS } from "./translations"; /** diff --git a/src/core/server/graph/common/context.ts b/src/core/server/graph/common/context.ts deleted file mode 100644 index 3838a854a..000000000 --- a/src/core/server/graph/common/context.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Db } from "mongodb"; -import uuid from "uuid"; - -import { LanguageCode } from "coral-common/helpers/i18n/locales"; -import { Config } from "coral-server/config"; -import logger, { Logger } from "coral-server/logger"; -import { PersistedQuery } from "coral-server/models/queries"; -import { User } from "coral-server/models/user"; -import { I18n } from "coral-server/services/i18n"; -import { AugmentedRedis } from "coral-server/services/redis"; -import { Request } from "coral-server/types/express"; -import { RedisPubSub } from "graphql-redis-subscriptions"; - -export interface CommonContextOptions { - id?: string; - now?: Date; - user?: User; - req?: Request; - logger?: Logger; - lang?: LanguageCode; - disableCaching?: boolean; - persisted?: PersistedQuery; - config: Config; - i18n: I18n; - pubsub: RedisPubSub; - mongo: Db; - redis: AugmentedRedis; -} - -export default class CommonContext { - public readonly user?: User; - public readonly req?: Request; - public readonly persisted?: PersistedQuery; - public readonly id: string; - public readonly config: Config; - public readonly i18n: I18n; - public readonly lang: LanguageCode; - public readonly now: Date; - public readonly logger: Logger; - public readonly pubsub: RedisPubSub; - public readonly mongo: Db; - public readonly redis: AugmentedRedis; - public readonly disableCaching: boolean; - - constructor({ - id = uuid.v1(), - now = new Date(), - logger: log = logger, - user, - req, - persisted, - config, - i18n, - lang = i18n.getDefaultLang(), - pubsub, - mongo, - redis, - disableCaching = false, - }: CommonContextOptions) { - this.id = id; - this.logger = log.child( - { - context: "graph", - contextID: id, - }, - true - ); - this.now = now; - this.user = user; - this.req = req; - this.persisted = persisted; - this.config = config; - this.i18n = i18n; - this.lang = lang; - this.pubsub = pubsub; - this.mongo = mongo; - this.redis = redis; - this.disableCaching = disableCaching; - } -} diff --git a/src/core/server/graph/common/resolvers/mutation.ts b/src/core/server/graph/common/resolvers/mutation.ts deleted file mode 100644 index 78de8a76a..000000000 --- a/src/core/server/graph/common/resolvers/mutation.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ClientMutationProps { - clientMutationId: string; -} diff --git a/src/core/server/graph/context.ts b/src/core/server/graph/context.ts new file mode 100644 index 000000000..2521c3802 --- /dev/null +++ b/src/core/server/graph/context.ts @@ -0,0 +1,118 @@ +import { RedisPubSub } from "graphql-redis-subscriptions"; +import { Db } from "mongodb"; +import uuid from "uuid"; + +import { LanguageCode } from "coral-common/helpers/i18n/locales"; +import { Config } from "coral-server/config"; +import { + createPublisher, + Publisher, +} from "coral-server/graph/subscriptions/publisher"; +import logger, { Logger } from "coral-server/logger"; +import { PersistedQuery } from "coral-server/models/queries"; +import { Tenant } from "coral-server/models/tenant"; +import { User } from "coral-server/models/user"; +import { MailerQueue } from "coral-server/queue/tasks/mailer"; +import { NotifierQueue } from "coral-server/queue/tasks/notifier"; +import { ScraperQueue } from "coral-server/queue/tasks/scraper"; +import { I18n } from "coral-server/services/i18n"; +import { JWTSigningConfig } from "coral-server/services/jwt"; +import { AugmentedRedis } from "coral-server/services/redis"; +import createSlackPublisher from "coral-server/services/slack/publisher"; +import TenantCache from "coral-server/services/tenant/cache"; +import { Request } from "coral-server/types/express"; + +import loaders from "./loaders"; +import mutators from "./mutators"; + +export interface GraphContextOptions { + clientID?: string; + disableCaching?: boolean; + id?: string; + lang?: LanguageCode; + logger?: Logger; + now?: Date; + persisted?: PersistedQuery; + req?: Request; + signingConfig?: JWTSigningConfig; + user?: User; + + config: Config; + i18n: I18n; + mailerQueue: MailerQueue; + mongo: Db; + notifierQueue: NotifierQueue; + pubsub: RedisPubSub; + redis: AugmentedRedis; + scraperQueue: ScraperQueue; + tenant: Tenant; + tenantCache: TenantCache; +} + +export default class GraphContext { + public readonly config: Config; + public readonly disableCaching: boolean; + public readonly i18n: I18n; + public readonly id: string; + public readonly lang: LanguageCode; + public readonly loaders: ReturnType; + public readonly logger: Logger; + public readonly mailerQueue: MailerQueue; + public readonly mongo: Db; + public readonly mutators: ReturnType; + public readonly now: Date; + public readonly publisher: Publisher; + public readonly pubsub: RedisPubSub; + public readonly redis: AugmentedRedis; + public readonly scraperQueue: ScraperQueue; + public readonly tenant: Tenant; + public readonly tenantCache: TenantCache; + + public readonly clientID?: string; + public readonly persisted?: PersistedQuery; + public readonly req?: Request; + public readonly signingConfig?: JWTSigningConfig; + public readonly user?: User; + + constructor(options: GraphContextOptions) { + this.id = options.id || uuid.v1(); + this.now = options.now || new Date(); + this.lang = options.lang || options.i18n.getDefaultLang(); + this.disableCaching = options.disableCaching || false; + + this.logger = (options.logger || logger).child( + { context: "graph", contextID: this.id }, + true + ); + + this.user = options.user; + this.req = options.req; + this.persisted = options.persisted; + this.config = options.config; + this.i18n = options.i18n; + this.pubsub = options.pubsub; + this.mongo = options.mongo; + this.redis = options.redis; + this.tenant = options.tenant; + this.tenantCache = options.tenantCache; + this.scraperQueue = options.scraperQueue; + this.mailerQueue = options.mailerQueue; + this.signingConfig = options.signingConfig; + this.clientID = options.clientID; + + this.publisher = createPublisher({ + pubsub: this.pubsub, + slackPublisher: createSlackPublisher( + this.mongo, + this.config, + this.tenant + ), + notifierQueue: options.notifierQueue, + tenantID: this.tenant.id, + clientID: this.clientID, + }); + + this.loaders = loaders(this); + this.mutators = mutators(this); + } +} diff --git a/src/core/server/graph/common/directives/auth.ts b/src/core/server/graph/directives/auth.ts similarity index 96% rename from src/core/server/graph/common/directives/auth.ts rename to src/core/server/graph/directives/auth.ts index b5727f04a..02e9c67d4 100644 --- a/src/core/server/graph/common/directives/auth.ts +++ b/src/core/server/graph/directives/auth.ts @@ -6,7 +6,7 @@ import { UserForbiddenError, UserSuspended, } from "coral-server/errors"; -import CommonContext from "coral-server/graph/common/context"; +import GraphContext from "coral-server/graph/context"; import { consolidateUserStatus, consolidateUserSuspensionStatus, @@ -16,7 +16,7 @@ import { import { GQLUSER_AUTH_CONDITIONS, GQLUSER_ROLE, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { calculateLocationKey } from "./helpers"; @@ -64,7 +64,7 @@ const calculateAuthConditionsMemoized = memoize(calculateAuthConditions); const auth: DirectiveResolverFn< Record, - CommonContext + GraphContext > = ( next, src, diff --git a/src/core/server/graph/common/directives/constraint.ts b/src/core/server/graph/directives/constraint.ts similarity index 100% rename from src/core/server/graph/common/directives/constraint.ts rename to src/core/server/graph/directives/constraint.ts diff --git a/src/core/server/graph/common/directives/helpers.ts b/src/core/server/graph/directives/helpers.ts similarity index 100% rename from src/core/server/graph/common/directives/helpers.ts rename to src/core/server/graph/directives/helpers.ts diff --git a/src/core/server/graph/tenant/directives/rate.ts b/src/core/server/graph/directives/rate.ts similarity index 92% rename from src/core/server/graph/tenant/directives/rate.ts rename to src/core/server/graph/directives/rate.ts index e2e95e779..701fdb61b 100644 --- a/src/core/server/graph/tenant/directives/rate.ts +++ b/src/core/server/graph/directives/rate.ts @@ -2,9 +2,9 @@ import { DirectiveResolverFn } from "graphql-tools"; import { DateTime } from "luxon"; import { RateLimitExceeded } from "coral-server/errors"; -import { calculateLocationKey } from "coral-server/graph/common/directives/helpers"; +import { calculateLocationKey } from "coral-server/graph/directives/helpers"; -import TenantContext from "../context"; +import GraphContext from "../context"; export interface RateDirectiveArgs { max?: number; @@ -14,7 +14,7 @@ export interface RateDirectiveArgs { const rate: DirectiveResolverFn< Record, - TenantContext + GraphContext > = async ( next, src, diff --git a/src/core/server/graph/common/errors.ts b/src/core/server/graph/errors.ts similarity index 100% rename from src/core/server/graph/common/errors.ts rename to src/core/server/graph/errors.ts diff --git a/src/core/server/graph/common/extensions/ErrorWrappingExtension.ts b/src/core/server/graph/extensions/ErrorWrappingExtension.ts similarity index 89% rename from src/core/server/graph/common/extensions/ErrorWrappingExtension.ts rename to src/core/server/graph/extensions/ErrorWrappingExtension.ts index a873b7324..531bbca3f 100644 --- a/src/core/server/graph/common/extensions/ErrorWrappingExtension.ts +++ b/src/core/server/graph/extensions/ErrorWrappingExtension.ts @@ -8,12 +8,9 @@ import { InternalDevelopmentError, InternalError, } from "coral-server/errors"; -import CommonContext from "coral-server/graph/common/context"; +import GraphContext from "coral-server/graph/context"; -function hoistCoralErrorExtensions( - ctx: CommonContext, - err: GraphQLError -): void { +function hoistCoralErrorExtensions(ctx: GraphContext, err: GraphQLError): void { // Grab or wrap the originalError so that it's a CoralError. const originalError = extractOriginalError(err, ctx); if (!originalError) { @@ -44,7 +41,7 @@ function hoistCoralErrorExtensions( */ function extractOriginalError( err: GraphQLError, - ctx: CommonContext + ctx: GraphContext ): CoralError | undefined { if (err instanceof ApolloError) { // ApolloError's don't need to be hoisted as they contain validation @@ -78,7 +75,7 @@ function extractOriginalError( * @param err the error that occurred */ export function enrichError( - ctx: CommonContext, + ctx: GraphContext, err: GraphQLError ): GraphQLError { if (err.extensions) { @@ -97,11 +94,11 @@ export function enrichError( return err; } -export class ErrorWrappingExtension implements GraphQLExtension { +export class ErrorWrappingExtension implements GraphQLExtension { public willSendResponse(o: { graphqlResponse: GraphQLResponse; - context: CommonContext; - }): void | { graphqlResponse: GraphQLResponse; context: CommonContext } { + context: GraphContext; + }): void | { graphqlResponse: GraphQLResponse; context: GraphContext } { if (o.graphqlResponse.errors) { return { ...o, diff --git a/src/core/server/graph/common/extensions/LoggerExtension.ts b/src/core/server/graph/extensions/LoggerExtension.ts similarity index 88% rename from src/core/server/graph/common/extensions/LoggerExtension.ts rename to src/core/server/graph/extensions/LoggerExtension.ts index 051a64ccb..e0ab84bf8 100644 --- a/src/core/server/graph/common/extensions/LoggerExtension.ts +++ b/src/core/server/graph/extensions/LoggerExtension.ts @@ -6,16 +6,16 @@ import { } from "graphql-extensions"; import now from "performance-now"; -import CommonContext from "coral-server/graph/common/context"; +import GraphContext from "coral-server/graph/context"; import { getOperationMetadata, getPersistedQueryMetadata } from "./helpers"; -export function logError(ctx: CommonContext, err: GraphQLError) { +export function logError(ctx: GraphContext, err: GraphQLError) { ctx.logger.error({ err }, "graphql query error"); } export function logQuery( - ctx: CommonContext, + ctx: GraphContext, document: DocumentNode, persisted = ctx.persisted, responseTime?: number @@ -38,7 +38,7 @@ export function logQuery( ); } -export class LoggerExtension implements GraphQLExtension { +export class LoggerExtension implements GraphQLExtension { public executionDidStart(o: { executionArgs: ExecutionArgs; }): EndHandler | void { @@ -64,7 +64,7 @@ export class LoggerExtension implements GraphQLExtension { public willSendResponse(response: { graphqlResponse: GraphQLResponse; - context: CommonContext; + context: GraphContext; }): void { if (response.graphqlResponse.errors) { response.graphqlResponse.errors.forEach(err => diff --git a/src/core/server/graph/common/extensions/MetricsExtension.ts b/src/core/server/graph/extensions/MetricsExtension.ts similarity index 90% rename from src/core/server/graph/common/extensions/MetricsExtension.ts rename to src/core/server/graph/extensions/MetricsExtension.ts index f73140f6c..cef01957d 100644 --- a/src/core/server/graph/common/extensions/MetricsExtension.ts +++ b/src/core/server/graph/extensions/MetricsExtension.ts @@ -1,4 +1,4 @@ -import CommonContext from "coral-server/graph/common/context"; +import GraphContext from "coral-server/graph/context"; import { Metrics } from "coral-server/services/metrics"; import { ExecutionArgs } from "graphql"; import { EndHandler, GraphQLExtension } from "graphql-extensions"; @@ -6,7 +6,7 @@ import now from "performance-now"; import { getOperationMetadata } from "./helpers"; -export class MetricsExtension implements GraphQLExtension { +export class MetricsExtension implements GraphQLExtension { constructor(private metrics: Metrics) {} public executionDidStart(o: { diff --git a/src/core/server/graph/common/extensions/helpers.ts b/src/core/server/graph/extensions/helpers.ts similarity index 100% rename from src/core/server/graph/common/extensions/helpers.ts rename to src/core/server/graph/extensions/helpers.ts diff --git a/src/core/server/graph/common/extensions/index.ts b/src/core/server/graph/extensions/index.ts similarity index 100% rename from src/core/server/graph/common/extensions/index.ts rename to src/core/server/graph/extensions/index.ts diff --git a/src/core/server/graph/tenant/loaders/Auth.ts b/src/core/server/graph/loaders/Auth.ts similarity index 78% rename from src/core/server/graph/tenant/loaders/Auth.ts rename to src/core/server/graph/loaders/Auth.ts index ddfe4922a..a294fe1d2 100644 --- a/src/core/server/graph/tenant/loaders/Auth.ts +++ b/src/core/server/graph/loaders/Auth.ts @@ -1,10 +1,10 @@ import DataLoader from "dataloader"; -import TenantContext from "coral-server/graph/tenant/context"; -import { GQLDiscoveredOIDCConfiguration } from "coral-server/graph/tenant/schema/__generated__/types"; +import GraphContext from "coral-server/graph/context"; +import { GQLDiscoveredOIDCConfiguration } from "coral-server/graph/schema/__generated__/types"; import { discoverOIDCConfiguration } from "coral-server/services/tenant"; -export default (ctx: TenantContext) => ({ +export default (ctx: GraphContext) => ({ discoverOIDCConfiguration: new DataLoader< string, GQLDiscoveredOIDCConfiguration | null diff --git a/src/core/server/graph/tenant/loaders/CommentActions.ts b/src/core/server/graph/loaders/CommentActions.ts similarity index 87% rename from src/core/server/graph/tenant/loaders/CommentActions.ts rename to src/core/server/graph/loaders/CommentActions.ts index 6f80d17a8..a09a3aaa6 100644 --- a/src/core/server/graph/tenant/loaders/CommentActions.ts +++ b/src/core/server/graph/loaders/CommentActions.ts @@ -1,6 +1,6 @@ import { defaultTo } from "lodash"; -import Context from "coral-server/graph/tenant/context"; +import Context from "coral-server/graph/context"; import { CommentActionConnectionInput, retrieveCommentActionConnection, diff --git a/src/core/server/graph/tenant/loaders/CommentModerationActions.ts b/src/core/server/graph/loaders/CommentModerationActions.ts similarity index 82% rename from src/core/server/graph/tenant/loaders/CommentModerationActions.ts rename to src/core/server/graph/loaders/CommentModerationActions.ts index 96a74990f..85203c487 100644 --- a/src/core/server/graph/tenant/loaders/CommentModerationActions.ts +++ b/src/core/server/graph/loaders/CommentModerationActions.ts @@ -1,13 +1,13 @@ import { defaultTo } from "lodash"; -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; import { CommentToStatusHistoryArgs, UserToCommentModerationActionHistoryArgs, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { retrieveCommentModerationActionConnection } from "coral-server/models/action/moderation/comment"; -export default (ctx: TenantContext) => ({ +export default (ctx: GraphContext) => ({ forModerator: ( { first, after }: UserToCommentModerationActionHistoryArgs, moderatorID: string diff --git a/src/core/server/graph/tenant/loaders/Comments.ts b/src/core/server/graph/loaders/Comments.ts similarity index 98% rename from src/core/server/graph/tenant/loaders/Comments.ts rename to src/core/server/graph/loaders/Comments.ts index dc47c52de..1b2bff90b 100644 --- a/src/core/server/graph/tenant/loaders/Comments.ts +++ b/src/core/server/graph/loaders/Comments.ts @@ -2,7 +2,7 @@ import DataLoader from "dataloader"; import { defaultTo, isNil, omitBy } from "lodash"; import { DateTime } from "luxon"; -import Context from "coral-server/graph/tenant/context"; +import Context from "coral-server/graph/context"; import { CommentToParentsArgs, CommentToRepliesArgs, @@ -15,7 +15,7 @@ import { UserToAllCommentsArgs, UserToCommentsArgs, UserToRejectedCommentsArgs, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { retrieveManyUserActionPresence } from "coral-server/models/action/comment"; import { Comment, diff --git a/src/core/server/graph/tenant/loaders/Stories.ts b/src/core/server/graph/loaders/Stories.ts similarity index 93% rename from src/core/server/graph/tenant/loaders/Stories.ts rename to src/core/server/graph/loaders/Stories.ts index 15bd58eb0..a0ed762bc 100644 --- a/src/core/server/graph/tenant/loaders/Stories.ts +++ b/src/core/server/graph/loaders/Stories.ts @@ -1,11 +1,11 @@ import DataLoader from "dataloader"; import { defaultTo } from "lodash"; -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; import { GQLSTORY_STATUS, QueryToStoriesArgs, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { Connection } from "coral-server/models/helpers"; import { retrieveManyStories, @@ -54,7 +54,7 @@ const queryFilter = (query?: string): StoryConnectionInput["filter"] => { * * @param ctx graph context to use to prime the loaders. */ -const primeStoriesFromConnection = (ctx: TenantContext) => ( +const primeStoriesFromConnection = (ctx: GraphContext) => ( connection: Readonly>> ) => { if (!ctx.disableCaching) { @@ -67,7 +67,7 @@ const primeStoriesFromConnection = (ctx: TenantContext) => ( return connection; }; -export default (ctx: TenantContext) => ({ +export default (ctx: GraphContext) => ({ findOrCreate: new DataLoader( createManyBatchLoadFn((input: FindOrCreateStory) => findOrCreate(ctx.mongo, ctx.tenant, input, ctx.scraperQueue, ctx.now) diff --git a/src/core/server/graph/tenant/loaders/Users.ts b/src/core/server/graph/loaders/Users.ts similarity index 96% rename from src/core/server/graph/tenant/loaders/Users.ts rename to src/core/server/graph/loaders/Users.ts index 7863ad677..1022cad41 100644 --- a/src/core/server/graph/tenant/loaders/Users.ts +++ b/src/core/server/graph/loaders/Users.ts @@ -1,12 +1,12 @@ import DataLoader from "dataloader"; import { defaultTo } from "lodash"; -import Context from "coral-server/graph/tenant/context"; +import Context from "coral-server/graph/context"; import { GQLUSER_ROLE, GQLUSER_STATUS, QueryToUsersArgs, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { Connection } from "coral-server/models/helpers"; import { retrieveManyUsers, diff --git a/src/core/server/graph/tenant/loaders/index.ts b/src/core/server/graph/loaders/index.ts similarity index 89% rename from src/core/server/graph/tenant/loaders/index.ts rename to src/core/server/graph/loaders/index.ts index 6e18d6a31..989cc9467 100644 --- a/src/core/server/graph/tenant/loaders/index.ts +++ b/src/core/server/graph/loaders/index.ts @@ -1,4 +1,4 @@ -import Context from "coral-server/graph/tenant/context"; +import Context from "coral-server/graph/context"; import Auth from "./Auth"; import CommentActions from "./CommentActions"; diff --git a/src/core/server/graph/tenant/loaders/util.ts b/src/core/server/graph/loaders/util.ts similarity index 100% rename from src/core/server/graph/tenant/loaders/util.ts rename to src/core/server/graph/loaders/util.ts diff --git a/src/core/server/graph/tenant/mutators/Actions.ts b/src/core/server/graph/mutators/Actions.ts similarity index 85% rename from src/core/server/graph/tenant/mutators/Actions.ts rename to src/core/server/graph/mutators/Actions.ts index 8bc494d11..dcedd783d 100644 --- a/src/core/server/graph/tenant/mutators/Actions.ts +++ b/src/core/server/graph/mutators/Actions.ts @@ -1,4 +1,4 @@ -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; import { approveComment, rejectComment } from "coral-server/stacks"; import { @@ -6,7 +6,7 @@ import { GQLRejectCommentInput, } from "../schema/__generated__/types"; -export const Actions = (ctx: TenantContext) => ({ +export const Actions = (ctx: GraphContext) => ({ approveComment: (input: GQLApproveCommentInput) => approveComment( ctx.mongo, diff --git a/src/core/server/graph/tenant/mutators/Comments.ts b/src/core/server/graph/mutators/Comments.ts similarity index 95% rename from src/core/server/graph/tenant/mutators/Comments.ts rename to src/core/server/graph/mutators/Comments.ts index 987e4f45e..70f1704fe 100644 --- a/src/core/server/graph/tenant/mutators/Comments.ts +++ b/src/core/server/graph/mutators/Comments.ts @@ -1,7 +1,7 @@ import { ERROR_CODES } from "coral-common/errors"; import { ADDITIONAL_DETAILS_MAX_LENGTH } from "coral-common/helpers/validate"; -import { mapFieldsetToErrorCodes } from "coral-server/graph/common/errors"; -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; +import { mapFieldsetToErrorCodes } from "coral-server/graph/errors"; import { addTag, removeTag } from "coral-server/services/comments"; import { createDontAgree, @@ -30,11 +30,11 @@ import { GQLRemoveCommentReactionInput, GQLTAG, GQLUnfeatureCommentInput, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { validateMaximumLength, WithoutMutationID } from "./util"; -export const Comments = (ctx: TenantContext) => ({ +export const Comments = (ctx: GraphContext) => ({ create: ({ clientMutationId, nudge = false, diff --git a/src/core/server/graph/tenant/mutators/Settings.ts b/src/core/server/graph/mutators/Settings.ts similarity index 84% rename from src/core/server/graph/tenant/mutators/Settings.ts rename to src/core/server/graph/mutators/Settings.ts index 589ae19bb..99ac256aa 100644 --- a/src/core/server/graph/tenant/mutators/Settings.ts +++ b/src/core/server/graph/mutators/Settings.ts @@ -1,4 +1,4 @@ -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; import { Tenant } from "coral-server/models/tenant"; import { disableFeatureFlag, @@ -10,7 +10,7 @@ import { import { GQLFEATURE_FLAG, GQLUpdateSettingsInput, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; export const Settings = ({ mongo, @@ -19,7 +19,7 @@ export const Settings = ({ tenant, config, now, -}: TenantContext) => ({ +}: GraphContext) => ({ update: (input: GQLUpdateSettingsInput): Promise => update(mongo, redis, tenantCache, config, tenant, input.settings), regenerateSSOKey: (): Promise => diff --git a/src/core/server/graph/tenant/mutators/Stories.ts b/src/core/server/graph/mutators/Stories.ts similarity index 89% rename from src/core/server/graph/tenant/mutators/Stories.ts rename to src/core/server/graph/mutators/Stories.ts index 6d7263834..5c3828087 100644 --- a/src/core/server/graph/tenant/mutators/Stories.ts +++ b/src/core/server/graph/mutators/Stories.ts @@ -1,18 +1,8 @@ import { isNull, omitBy } from "lodash"; import { ERROR_CODES } from "coral-common/errors"; -import { mapFieldsetToErrorCodes } from "coral-server/graph/common/errors"; -import TenantContext from "coral-server/graph/tenant/context"; -import { - GQLCloseStoryInput, - GQLCreateStoryInput, - GQLMergeStoriesInput, - GQLOpenStoryInput, - GQLRemoveStoryInput, - GQLScrapeStoryInput, - GQLUpdateStoryInput, - GQLUpdateStorySettingsInput, -} from "coral-server/graph/tenant/schema/__generated__/types"; +import GraphContext from "coral-server/graph/context"; +import { mapFieldsetToErrorCodes } from "coral-server/graph/errors"; import { Story } from "coral-server/models/story"; import { close, @@ -25,7 +15,18 @@ import { } from "coral-server/services/stories"; import { scrape } from "coral-server/services/stories/scraper"; -export const Stories = (ctx: TenantContext) => ({ +import { + GQLCloseStoryInput, + GQLCreateStoryInput, + GQLMergeStoriesInput, + GQLOpenStoryInput, + GQLRemoveStoryInput, + GQLScrapeStoryInput, + GQLUpdateStoryInput, + GQLUpdateStorySettingsInput, +} from "coral-server/graph/schema/__generated__/types"; + +export const Stories = (ctx: GraphContext) => ({ create: async (input: GQLCreateStoryInput): Promise | null> => mapFieldsetToErrorCodes( create( diff --git a/src/core/server/graph/tenant/mutators/Users.ts b/src/core/server/graph/mutators/Users.ts similarity index 97% rename from src/core/server/graph/tenant/mutators/Users.ts rename to src/core/server/graph/mutators/Users.ts index e5d893a3e..932b73412 100644 --- a/src/core/server/graph/tenant/mutators/Users.ts +++ b/src/core/server/graph/mutators/Users.ts @@ -1,6 +1,6 @@ import { ERROR_CODES } from "coral-common/errors"; -import { mapFieldsetToErrorCodes } from "coral-server/graph/common/errors"; -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; +import { mapFieldsetToErrorCodes } from "coral-server/graph/errors"; import { User } from "coral-server/models/user"; import { addModeratorNote, @@ -65,9 +65,10 @@ import { GQLUpdateUserRoleInput, GQLUpdateUserUsernameInput, } from "../schema/__generated__/types"; + import { WithoutMutationID } from "./util"; -export const Users = (ctx: TenantContext) => ({ +export const Users = (ctx: GraphContext) => ({ invite: async ({ role, emails }: GQLInviteUsersInput) => mapFieldsetToErrorCodes( invite( diff --git a/src/core/server/graph/tenant/mutators/index.ts b/src/core/server/graph/mutators/index.ts similarity index 75% rename from src/core/server/graph/tenant/mutators/index.ts rename to src/core/server/graph/mutators/index.ts index 1ccc8e3ae..f5a86f5cf 100644 --- a/src/core/server/graph/tenant/mutators/index.ts +++ b/src/core/server/graph/mutators/index.ts @@ -1,4 +1,4 @@ -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; import { Actions } from "./Actions"; import { Comments } from "./Comments"; @@ -6,7 +6,7 @@ import { Settings } from "./Settings"; import { Stories } from "./Stories"; import { Users } from "./Users"; -export default (ctx: TenantContext) => ({ +export default (ctx: GraphContext) => ({ Actions: Actions(ctx), Comments: Comments(ctx), Settings: Settings(ctx), diff --git a/src/core/server/graph/tenant/mutators/util.spec.ts b/src/core/server/graph/mutators/util.spec.ts similarity index 100% rename from src/core/server/graph/tenant/mutators/util.spec.ts rename to src/core/server/graph/mutators/util.spec.ts diff --git a/src/core/server/graph/tenant/mutators/util.ts b/src/core/server/graph/mutators/util.ts similarity index 100% rename from src/core/server/graph/tenant/mutators/util.ts rename to src/core/server/graph/mutators/util.ts diff --git a/src/core/server/graph/common/persisted/index.ts b/src/core/server/graph/persisted/index.ts similarity index 100% rename from src/core/server/graph/common/persisted/index.ts rename to src/core/server/graph/persisted/index.ts diff --git a/src/core/server/graph/common/persisted/loader.ts b/src/core/server/graph/persisted/loader.ts similarity index 95% rename from src/core/server/graph/common/persisted/loader.ts rename to src/core/server/graph/persisted/loader.ts index 63c8dcb0e..cbed515df 100644 --- a/src/core/server/graph/common/persisted/loader.ts +++ b/src/core/server/graph/persisted/loader.ts @@ -3,7 +3,7 @@ import { parse } from "graphql"; import path from "path"; import { version } from "coral-common/version"; -import { getOperationMetadata } from "coral-server/graph/common/extensions/helpers"; +import { getOperationMetadata } from "coral-server/graph/extensions/helpers"; import logger from "coral-server/logger"; import { PersistedQuery } from "coral-server/models/queries"; diff --git a/src/core/server/graph/common/persisted/mapper.ts b/src/core/server/graph/persisted/mapper.ts similarity index 100% rename from src/core/server/graph/common/persisted/mapper.ts rename to src/core/server/graph/persisted/mapper.ts diff --git a/src/core/server/graph/tenant/resolvers/ApproveCommentPayload.ts b/src/core/server/graph/resolvers/ApproveCommentPayload.ts similarity index 85% rename from src/core/server/graph/tenant/resolvers/ApproveCommentPayload.ts rename to src/core/server/graph/resolvers/ApproveCommentPayload.ts index b7f35fdca..7d1f1f087 100644 --- a/src/core/server/graph/tenant/resolvers/ApproveCommentPayload.ts +++ b/src/core/server/graph/resolvers/ApproveCommentPayload.ts @@ -1,4 +1,4 @@ -import { GQLApproveCommentPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLApproveCommentPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { moderationQueuesResolver } from "./ModerationQueues"; diff --git a/src/core/server/graph/tenant/resolvers/AuthIntegrations.ts b/src/core/server/graph/resolvers/AuthIntegrations.ts similarity index 86% rename from src/core/server/graph/tenant/resolvers/AuthIntegrations.ts rename to src/core/server/graph/resolvers/AuthIntegrations.ts index 386092700..6243d072b 100644 --- a/src/core/server/graph/tenant/resolvers/AuthIntegrations.ts +++ b/src/core/server/graph/resolvers/AuthIntegrations.ts @@ -1,7 +1,7 @@ import { GQLAuthIntegrations, GQLAuthIntegrationsTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; const disabled = { enabled: false }; diff --git a/src/core/server/graph/tenant/resolvers/BanStatus.ts b/src/core/server/graph/resolvers/BanStatus.ts similarity index 77% rename from src/core/server/graph/tenant/resolvers/BanStatus.ts rename to src/core/server/graph/resolvers/BanStatus.ts index 4d9794500..af0f2834b 100644 --- a/src/core/server/graph/tenant/resolvers/BanStatus.ts +++ b/src/core/server/graph/resolvers/BanStatus.ts @@ -1,4 +1,4 @@ -import { GQLBanStatusTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLBanStatusTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export type BanStatusInput = user.ConsolidatedBanStatus & { diff --git a/src/core/server/graph/tenant/resolvers/BanStatusHistory.ts b/src/core/server/graph/resolvers/BanStatusHistory.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/BanStatusHistory.ts rename to src/core/server/graph/resolvers/BanStatusHistory.ts index 5e99f5173..11600c3ad 100644 --- a/src/core/server/graph/tenant/resolvers/BanStatusHistory.ts +++ b/src/core/server/graph/resolvers/BanStatusHistory.ts @@ -1,4 +1,4 @@ -import { GQLBanStatusHistoryTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLBanStatusHistoryTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export const BanStatusHistory: Required< diff --git a/src/core/server/graph/tenant/resolvers/CloseCommenting.ts b/src/core/server/graph/resolvers/CloseCommenting.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/CloseCommenting.ts rename to src/core/server/graph/resolvers/CloseCommenting.ts index abfe03b42..47096a3da 100644 --- a/src/core/server/graph/tenant/resolvers/CloseCommenting.ts +++ b/src/core/server/graph/resolvers/CloseCommenting.ts @@ -1,4 +1,4 @@ -import { GQLCloseCommentingTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCloseCommentingTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as settings from "coral-server/models/settings"; import { translate } from "coral-server/services/i18n"; diff --git a/src/core/server/graph/tenant/resolvers/Comment.ts b/src/core/server/graph/resolvers/Comment.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/Comment.ts rename to src/core/server/graph/resolvers/Comment.ts index e75e1f319..9dd20bef9 100644 --- a/src/core/server/graph/tenant/resolvers/Comment.ts +++ b/src/core/server/graph/resolvers/Comment.ts @@ -2,11 +2,7 @@ import { GraphQLResolveInfo } from "graphql"; import { defaultTo } from "lodash"; import { StoryNotFoundError } from "coral-server/errors"; -import { getRequestedFields } from "coral-server/graph/tenant/resolvers/util"; -import { - GQLComment, - GQLCommentTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +import { getRequestedFields } from "coral-server/graph/resolvers/util"; import { ACTION_TYPE, decodeActionCounts, @@ -21,10 +17,15 @@ import { createConnection } from "coral-server/models/helpers"; import { getURLWithCommentID } from "coral-server/models/story"; import { getCommentEditableUntilDate } from "coral-server/services/comments"; -import TenantContext from "../context"; +import { + GQLComment, + GQLCommentTypeResolver, +} from "coral-server/graph/schema/__generated__/types"; + +import GraphContext from "../context"; export const maybeLoadOnlyID = ( - ctx: TenantContext, + ctx: GraphContext, info: GraphQLResolveInfo, id: string ) => { @@ -78,7 +79,7 @@ export const Comment: GQLCommentTypeResolver = { const children = await ctx.loaders.Comments.comment.loadMany(childIDs); return children.reduce( - (sum, c) => (c && hasPublishedStatus(c) ? sum + 1 : sum), + (sum: any, c: any) => (c && hasPublishedStatus(c) ? sum + 1 : sum), 0 ); }, diff --git a/src/core/server/graph/tenant/resolvers/CommentCounts.ts b/src/core/server/graph/resolvers/CommentCounts.ts similarity index 93% rename from src/core/server/graph/tenant/resolvers/CommentCounts.ts rename to src/core/server/graph/resolvers/CommentCounts.ts index f82cda762..bdefa4759 100644 --- a/src/core/server/graph/tenant/resolvers/CommentCounts.ts +++ b/src/core/server/graph/resolvers/CommentCounts.ts @@ -1,4 +1,4 @@ -import { GQLCommentCountsTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentCountsTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { calculateTotalPublishedCommentCount, Story, diff --git a/src/core/server/graph/tenant/resolvers/CommentCreatedPayload.ts b/src/core/server/graph/resolvers/CommentCreatedPayload.ts similarity index 89% rename from src/core/server/graph/tenant/resolvers/CommentCreatedPayload.ts rename to src/core/server/graph/resolvers/CommentCreatedPayload.ts index 29cc7acc3..20063cf6e 100644 --- a/src/core/server/graph/tenant/resolvers/CommentCreatedPayload.ts +++ b/src/core/server/graph/resolvers/CommentCreatedPayload.ts @@ -1,4 +1,4 @@ -import { GQLCommentCreatedPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentCreatedPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { maybeLoadOnlyID } from "./Comment"; import { CommentCreatedInput } from "./Subscription/commentCreated"; diff --git a/src/core/server/graph/tenant/resolvers/CommentEnteredModerationQueuePayload.ts b/src/core/server/graph/resolvers/CommentEnteredModerationQueuePayload.ts similarity index 88% rename from src/core/server/graph/tenant/resolvers/CommentEnteredModerationQueuePayload.ts rename to src/core/server/graph/resolvers/CommentEnteredModerationQueuePayload.ts index 5f6f9b183..6d141719d 100644 --- a/src/core/server/graph/tenant/resolvers/CommentEnteredModerationQueuePayload.ts +++ b/src/core/server/graph/resolvers/CommentEnteredModerationQueuePayload.ts @@ -1,4 +1,4 @@ -import { GQLCommentEnteredModerationQueuePayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentEnteredModerationQueuePayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { maybeLoadOnlyID } from "./Comment"; import { CommentEnteredModerationQueueInput } from "./Subscription/commentEnteredModerationQueue"; diff --git a/src/core/server/graph/tenant/resolvers/CommentLeftModerationQueuePayload.ts b/src/core/server/graph/resolvers/CommentLeftModerationQueuePayload.ts similarity index 88% rename from src/core/server/graph/tenant/resolvers/CommentLeftModerationQueuePayload.ts rename to src/core/server/graph/resolvers/CommentLeftModerationQueuePayload.ts index 2bcbaa318..3270de30d 100644 --- a/src/core/server/graph/tenant/resolvers/CommentLeftModerationQueuePayload.ts +++ b/src/core/server/graph/resolvers/CommentLeftModerationQueuePayload.ts @@ -1,4 +1,4 @@ -import { GQLCommentLeftModerationQueuePayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentLeftModerationQueuePayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { maybeLoadOnlyID } from "./Comment"; import { CommentLeftModerationQueueInput } from "./Subscription/commentLeftModerationQueue"; diff --git a/src/core/server/graph/tenant/resolvers/CommentModerationAction.ts b/src/core/server/graph/resolvers/CommentModerationAction.ts similarity index 100% rename from src/core/server/graph/tenant/resolvers/CommentModerationAction.ts rename to src/core/server/graph/resolvers/CommentModerationAction.ts diff --git a/src/core/server/graph/tenant/resolvers/CommentReleasedPayload.ts b/src/core/server/graph/resolvers/CommentReleasedPayload.ts similarity index 89% rename from src/core/server/graph/tenant/resolvers/CommentReleasedPayload.ts rename to src/core/server/graph/resolvers/CommentReleasedPayload.ts index 8ccd84300..aa5666b6f 100644 --- a/src/core/server/graph/tenant/resolvers/CommentReleasedPayload.ts +++ b/src/core/server/graph/resolvers/CommentReleasedPayload.ts @@ -1,4 +1,4 @@ -import { GQLCommentReleasedPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentReleasedPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { maybeLoadOnlyID } from "./Comment"; import { CommentReleasedInput } from "./Subscription/commentReleased"; diff --git a/src/core/server/graph/tenant/resolvers/CommentReplyCreatedPayload.ts b/src/core/server/graph/resolvers/CommentReplyCreatedPayload.ts similarity index 88% rename from src/core/server/graph/tenant/resolvers/CommentReplyCreatedPayload.ts rename to src/core/server/graph/resolvers/CommentReplyCreatedPayload.ts index 2fb51ddc6..2758c800d 100644 --- a/src/core/server/graph/tenant/resolvers/CommentReplyCreatedPayload.ts +++ b/src/core/server/graph/resolvers/CommentReplyCreatedPayload.ts @@ -1,4 +1,4 @@ -import { GQLCommentReplyCreatedPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentReplyCreatedPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { maybeLoadOnlyID } from "./Comment"; import { CommentReplyCreatedInput } from "./Subscription/commentReplyCreated"; diff --git a/src/core/server/graph/tenant/resolvers/CommentRevision.ts b/src/core/server/graph/resolvers/CommentRevision.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/CommentRevision.ts rename to src/core/server/graph/resolvers/CommentRevision.ts index 68c0e3128..7c01ef6bf 100644 --- a/src/core/server/graph/tenant/resolvers/CommentRevision.ts +++ b/src/core/server/graph/resolvers/CommentRevision.ts @@ -1,4 +1,4 @@ -import { GQLCommentRevisionTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentRevisionTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { decodeActionCounts } from "coral-server/models/action/comment"; import { Comment, Revision } from "coral-server/models/comment"; diff --git a/src/core/server/graph/tenant/resolvers/CommentStatusUpdatedPayload.ts b/src/core/server/graph/resolvers/CommentStatusUpdatedPayload.ts similarity index 91% rename from src/core/server/graph/tenant/resolvers/CommentStatusUpdatedPayload.ts rename to src/core/server/graph/resolvers/CommentStatusUpdatedPayload.ts index a880e2ca6..60cb92006 100644 --- a/src/core/server/graph/tenant/resolvers/CommentStatusUpdatedPayload.ts +++ b/src/core/server/graph/resolvers/CommentStatusUpdatedPayload.ts @@ -1,4 +1,4 @@ -import { GQLCommentStatusUpdatedPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCommentStatusUpdatedPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { maybeLoadOnlyID } from "./Comment"; import { CommentStatusUpdatedInput } from "./Subscription/commentStatusUpdated"; diff --git a/src/core/server/graph/tenant/resolvers/DisableCommenting.ts b/src/core/server/graph/resolvers/DisableCommenting.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/DisableCommenting.ts rename to src/core/server/graph/resolvers/DisableCommenting.ts index 6eb053918..c8f122942 100644 --- a/src/core/server/graph/tenant/resolvers/DisableCommenting.ts +++ b/src/core/server/graph/resolvers/DisableCommenting.ts @@ -1,4 +1,4 @@ -import { GQLDisableCommentingTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLDisableCommentingTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as settings from "coral-server/models/settings"; import { translate } from "coral-server/services/i18n"; diff --git a/src/core/server/graph/tenant/resolvers/FacebookAuthIntegration.ts b/src/core/server/graph/resolvers/FacebookAuthIntegration.ts similarity index 86% rename from src/core/server/graph/tenant/resolvers/FacebookAuthIntegration.ts rename to src/core/server/graph/resolvers/FacebookAuthIntegration.ts index d26d6e149..a734b2c72 100644 --- a/src/core/server/graph/tenant/resolvers/FacebookAuthIntegration.ts +++ b/src/core/server/graph/resolvers/FacebookAuthIntegration.ts @@ -1,7 +1,7 @@ import { GQLFacebookAuthIntegration, GQLFacebookAuthIntegrationTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { reconstructTenantURLResolver } from "./util"; diff --git a/src/core/server/graph/tenant/resolvers/FeatureCommentPayload.ts b/src/core/server/graph/resolvers/FeatureCommentPayload.ts similarity index 85% rename from src/core/server/graph/tenant/resolvers/FeatureCommentPayload.ts rename to src/core/server/graph/resolvers/FeatureCommentPayload.ts index 9bc33dfc5..64c2e76e0 100644 --- a/src/core/server/graph/tenant/resolvers/FeatureCommentPayload.ts +++ b/src/core/server/graph/resolvers/FeatureCommentPayload.ts @@ -1,4 +1,4 @@ -import { GQLFeatureCommentPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLFeatureCommentPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { moderationQueuesResolver } from "./ModerationQueues"; diff --git a/src/core/server/graph/tenant/resolvers/Flag.ts b/src/core/server/graph/resolvers/Flag.ts similarity index 90% rename from src/core/server/graph/tenant/resolvers/Flag.ts rename to src/core/server/graph/resolvers/Flag.ts index ad8b985bd..9db1563f5 100644 --- a/src/core/server/graph/tenant/resolvers/Flag.ts +++ b/src/core/server/graph/resolvers/Flag.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_FLAG_REASON, GQLFlagTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import * as actions from "coral-server/models/action/comment"; export const Flag: GQLFlagTypeResolver = { diff --git a/src/core/server/graph/tenant/resolvers/GoogleAuthIntegration.ts b/src/core/server/graph/resolvers/GoogleAuthIntegration.ts similarity index 85% rename from src/core/server/graph/tenant/resolvers/GoogleAuthIntegration.ts rename to src/core/server/graph/resolvers/GoogleAuthIntegration.ts index 8ce12c5bc..e6936a5df 100644 --- a/src/core/server/graph/tenant/resolvers/GoogleAuthIntegration.ts +++ b/src/core/server/graph/resolvers/GoogleAuthIntegration.ts @@ -1,7 +1,7 @@ import { GQLGoogleAuthIntegration, GQLGoogleAuthIntegrationTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { reconstructTenantURLResolver } from "./util"; diff --git a/src/core/server/graph/tenant/resolvers/Invite.ts b/src/core/server/graph/resolvers/Invite.ts similarity index 68% rename from src/core/server/graph/tenant/resolvers/Invite.ts rename to src/core/server/graph/resolvers/Invite.ts index bf03813c9..a3e5f2682 100644 --- a/src/core/server/graph/tenant/resolvers/Invite.ts +++ b/src/core/server/graph/resolvers/Invite.ts @@ -1,4 +1,4 @@ -import { GQLInviteTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLInviteTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as invite from "coral-server/models/invite"; export const Invite: GQLInviteTypeResolver = { diff --git a/src/core/server/graph/tenant/resolvers/LiveConfiguration.ts b/src/core/server/graph/resolvers/LiveConfiguration.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/LiveConfiguration.ts rename to src/core/server/graph/resolvers/LiveConfiguration.ts index 746e0af85..6848a124c 100644 --- a/src/core/server/graph/tenant/resolvers/LiveConfiguration.ts +++ b/src/core/server/graph/resolvers/LiveConfiguration.ts @@ -1,6 +1,6 @@ import { isUndefined } from "lodash"; -import { GQLLiveConfigurationTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLLiveConfigurationTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as settings from "coral-server/models/settings"; export type LiveConfigurationInput = settings.LiveConfiguration; diff --git a/src/core/server/graph/tenant/resolvers/ModerationQueue.ts b/src/core/server/graph/resolvers/ModerationQueue.ts similarity index 100% rename from src/core/server/graph/tenant/resolvers/ModerationQueue.ts rename to src/core/server/graph/resolvers/ModerationQueue.ts diff --git a/src/core/server/graph/tenant/resolvers/ModerationQueues.ts b/src/core/server/graph/resolvers/ModerationQueues.ts similarity index 96% rename from src/core/server/graph/tenant/resolvers/ModerationQueues.ts rename to src/core/server/graph/resolvers/ModerationQueues.ts index 1a246dfa6..7f6e14a0b 100644 --- a/src/core/server/graph/tenant/resolvers/ModerationQueues.ts +++ b/src/core/server/graph/resolvers/ModerationQueues.ts @@ -1,9 +1,3 @@ -import { - ApproveCommentPayloadToModerationQueuesResolver, - GQLModerationQueuesTypeResolver, - QueryToModerationQueuesResolver, - RejectCommentPayloadToModerationQueuesResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; import { CommentConnectionInput } from "coral-server/models/comment"; import { FilterQuery } from "coral-server/models/helpers"; import { @@ -16,7 +10,14 @@ import { UNMODERATED_STATUSES, } from "coral-server/services/comments/moderation/counts"; -import TenantContext from "../context"; +import { + ApproveCommentPayloadToModerationQueuesResolver, + GQLModerationQueuesTypeResolver, + QueryToModerationQueuesResolver, + RejectCommentPayloadToModerationQueuesResolver, +} from "coral-server/graph/schema/__generated__/types"; + +import GraphContext from "../context"; import { ModerationQueueInput } from "./ModerationQueue"; interface ModerationQueuesInput { @@ -70,7 +71,7 @@ export const storyModerationInputResolver = ( export const sharedModerationInputResolver = async ( source: any, args: any, - ctx: TenantContext + ctx: GraphContext ): Promise => ({ // We don't need to filter the connection, as this is tenant wide (tenant // filtering is completed at the model layer). diff --git a/src/core/server/graph/tenant/resolvers/ModeratorNote.ts b/src/core/server/graph/resolvers/ModeratorNote.ts similarity index 91% rename from src/core/server/graph/tenant/resolvers/ModeratorNote.ts rename to src/core/server/graph/resolvers/ModeratorNote.ts index bd7216822..344777dda 100644 --- a/src/core/server/graph/tenant/resolvers/ModeratorNote.ts +++ b/src/core/server/graph/resolvers/ModeratorNote.ts @@ -1,4 +1,4 @@ -import { GQLModeratorNoteTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLModeratorNoteTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export const ModeratorNote: Required< diff --git a/src/core/server/graph/tenant/resolvers/Mutation.ts b/src/core/server/graph/resolvers/Mutation.ts similarity index 98% rename from src/core/server/graph/tenant/resolvers/Mutation.ts rename to src/core/server/graph/resolvers/Mutation.ts index 59d2e7b11..d45735fe9 100644 --- a/src/core/server/graph/tenant/resolvers/Mutation.ts +++ b/src/core/server/graph/resolvers/Mutation.ts @@ -1,4 +1,4 @@ -import { GQLMutationTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLMutationTypeResolver } from "coral-server/graph/schema/__generated__/types"; // TODO: (wyattjoh) add rate limiting to these edges diff --git a/src/core/server/graph/tenant/resolvers/OIDCAuthIntegration.ts b/src/core/server/graph/resolvers/OIDCAuthIntegration.ts similarity index 85% rename from src/core/server/graph/tenant/resolvers/OIDCAuthIntegration.ts rename to src/core/server/graph/resolvers/OIDCAuthIntegration.ts index a86ec5911..1e7bbe0dd 100644 --- a/src/core/server/graph/tenant/resolvers/OIDCAuthIntegration.ts +++ b/src/core/server/graph/resolvers/OIDCAuthIntegration.ts @@ -1,7 +1,7 @@ import { GQLOIDCAuthIntegration, GQLOIDCAuthIntegrationTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { reconstructTenantURLResolver } from "./util"; diff --git a/src/core/server/graph/tenant/resolvers/PremodStatus.ts b/src/core/server/graph/resolvers/PremodStatus.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/PremodStatus.ts rename to src/core/server/graph/resolvers/PremodStatus.ts index c2522a38b..9131ec6b0 100644 --- a/src/core/server/graph/tenant/resolvers/PremodStatus.ts +++ b/src/core/server/graph/resolvers/PremodStatus.ts @@ -1,4 +1,4 @@ -import { GQLPremodStatusTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLPremodStatusTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export type PremodStatusInput = user.ConsolidatedPremodStatus & { diff --git a/src/core/server/graph/tenant/resolvers/PremodStatusHistory.ts b/src/core/server/graph/resolvers/PremodStatusHistory.ts similarity index 91% rename from src/core/server/graph/tenant/resolvers/PremodStatusHistory.ts rename to src/core/server/graph/resolvers/PremodStatusHistory.ts index 44d8557a9..249e90624 100644 --- a/src/core/server/graph/tenant/resolvers/PremodStatusHistory.ts +++ b/src/core/server/graph/resolvers/PremodStatusHistory.ts @@ -1,4 +1,4 @@ -import { GQLPremodStatusHistoryTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLPremodStatusHistoryTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export const PremodStatusHistory: Required< diff --git a/src/core/server/graph/tenant/resolvers/Profile.ts b/src/core/server/graph/resolvers/Profile.ts similarity index 85% rename from src/core/server/graph/tenant/resolvers/Profile.ts rename to src/core/server/graph/resolvers/Profile.ts index 5089b9cd6..b6d9a0eef 100644 --- a/src/core/server/graph/tenant/resolvers/Profile.ts +++ b/src/core/server/graph/resolvers/Profile.ts @@ -1,4 +1,4 @@ -import { GQLProfileTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLProfileTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; const resolveType: GQLProfileTypeResolver = profile => { diff --git a/src/core/server/graph/tenant/resolvers/Query.ts b/src/core/server/graph/resolvers/Query.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/Query.ts rename to src/core/server/graph/resolvers/Query.ts index a840096bd..1f6fca79d 100644 --- a/src/core/server/graph/tenant/resolvers/Query.ts +++ b/src/core/server/graph/resolvers/Query.ts @@ -1,4 +1,4 @@ -import { GQLQueryTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLQueryTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { moderationQueuesResolver } from "./ModerationQueues"; diff --git a/src/core/server/graph/tenant/resolvers/RecentCommentHistory.ts b/src/core/server/graph/resolvers/RecentCommentHistory.ts similarity index 88% rename from src/core/server/graph/tenant/resolvers/RecentCommentHistory.ts rename to src/core/server/graph/resolvers/RecentCommentHistory.ts index 5e2f8ed74..0aaf4fb78 100644 --- a/src/core/server/graph/tenant/resolvers/RecentCommentHistory.ts +++ b/src/core/server/graph/resolvers/RecentCommentHistory.ts @@ -1,4 +1,4 @@ -import { GQLRecentCommentHistoryTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLRecentCommentHistoryTypeResolver } from "coral-server/graph/schema/__generated__/types"; export interface RecentCommentHistoryInput { userID: string; diff --git a/src/core/server/graph/tenant/resolvers/RejectCommentPayload.ts b/src/core/server/graph/resolvers/RejectCommentPayload.ts similarity index 85% rename from src/core/server/graph/tenant/resolvers/RejectCommentPayload.ts rename to src/core/server/graph/resolvers/RejectCommentPayload.ts index 60008713d..4d786288a 100644 --- a/src/core/server/graph/tenant/resolvers/RejectCommentPayload.ts +++ b/src/core/server/graph/resolvers/RejectCommentPayload.ts @@ -1,4 +1,4 @@ -import { GQLRejectCommentPayloadTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLRejectCommentPayloadTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { moderationQueuesResolver } from "./ModerationQueues"; diff --git a/src/core/server/graph/tenant/resolvers/SSOAuthIntegration.ts b/src/core/server/graph/resolvers/SSOAuthIntegration.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/SSOAuthIntegration.ts rename to src/core/server/graph/resolvers/SSOAuthIntegration.ts index 09e0ef6ca..117db08db 100644 --- a/src/core/server/graph/tenant/resolvers/SSOAuthIntegration.ts +++ b/src/core/server/graph/resolvers/SSOAuthIntegration.ts @@ -1,6 +1,6 @@ import * as settings from "coral-server/models/settings"; -import { GQLSSOAuthIntegrationTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLSSOAuthIntegrationTypeResolver } from "coral-server/graph/schema/__generated__/types"; function getActiveSSOKey(keys: settings.SSOKey[]) { // Any key that has been rotated cannot be the active key. diff --git a/src/core/server/graph/tenant/resolvers/Settings.ts b/src/core/server/graph/resolvers/Settings.ts similarity index 90% rename from src/core/server/graph/tenant/resolvers/Settings.ts rename to src/core/server/graph/resolvers/Settings.ts index f1cf38473..66bbe89a5 100644 --- a/src/core/server/graph/tenant/resolvers/Settings.ts +++ b/src/core/server/graph/resolvers/Settings.ts @@ -3,7 +3,7 @@ import { Tenant } from "coral-server/models/tenant"; import { GQLFEATURE_FLAG, GQLSettingsTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; const filterValidFeatureFlags = () => { // Compute the valid flags based on this enum. diff --git a/src/core/server/graph/tenant/resolvers/SlackConfiguration.ts b/src/core/server/graph/resolvers/SlackConfiguration.ts similarity index 83% rename from src/core/server/graph/tenant/resolvers/SlackConfiguration.ts rename to src/core/server/graph/resolvers/SlackConfiguration.ts index 530a8ffa3..a0e48c0eb 100644 --- a/src/core/server/graph/tenant/resolvers/SlackConfiguration.ts +++ b/src/core/server/graph/resolvers/SlackConfiguration.ts @@ -1,7 +1,7 @@ import { GQLSlackConfiguration, GQLSlackConfigurationTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; export const SlackConfiguration: GQLSlackConfigurationTypeResolver< GQLSlackConfiguration diff --git a/src/core/server/graph/tenant/resolvers/Story.ts b/src/core/server/graph/resolvers/Story.ts similarity index 88% rename from src/core/server/graph/tenant/resolvers/Story.ts rename to src/core/server/graph/resolvers/Story.ts index 1a5167d97..482678df3 100644 --- a/src/core/server/graph/tenant/resolvers/Story.ts +++ b/src/core/server/graph/resolvers/Story.ts @@ -4,15 +4,15 @@ import { GQLSTORY_STATUS, GQLStoryTypeResolver, GQLTAG, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { decodeActionCounts } from "coral-server/models/action/comment"; import * as story from "coral-server/models/story"; -import TenantContext from "../context"; +import GraphContext from "../context"; import { CommentCountsInput } from "./CommentCounts"; import { storyModerationInputResolver } from "./ModerationQueues"; -const isStoryClosed = (s: story.Story, ctx: TenantContext) => { +const isStoryClosed = (s: story.Story, ctx: GraphContext) => { const closedAt = story.getStoryClosedAt(ctx.tenant, s) || null; return !!closedAt && new Date() >= closedAt; }; diff --git a/src/core/server/graph/tenant/resolvers/StorySettings.ts b/src/core/server/graph/resolvers/StorySettings.ts similarity index 100% rename from src/core/server/graph/tenant/resolvers/StorySettings.ts rename to src/core/server/graph/resolvers/StorySettings.ts diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentCreated.ts b/src/core/server/graph/resolvers/Subscription/commentCreated.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/Subscription/commentCreated.ts rename to src/core/server/graph/resolvers/Subscription/commentCreated.ts index 7a51f32a3..aae4e2a6a 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentCreated.ts +++ b/src/core/server/graph/resolvers/Subscription/commentCreated.ts @@ -1,4 +1,4 @@ -import { SubscriptionToCommentCreatedResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { SubscriptionToCommentCreatedResolver } from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentEnteredModerationQueue.ts b/src/core/server/graph/resolvers/Subscription/commentEnteredModerationQueue.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/Subscription/commentEnteredModerationQueue.ts rename to src/core/server/graph/resolvers/Subscription/commentEnteredModerationQueue.ts index 1f7030c35..d946eb9e7 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentEnteredModerationQueue.ts +++ b/src/core/server/graph/resolvers/Subscription/commentEnteredModerationQueue.ts @@ -1,7 +1,7 @@ import { GQLMODERATION_QUEUE, SubscriptionToCommentEnteredModerationQueueResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentFeatured.ts b/src/core/server/graph/resolvers/Subscription/commentFeatured.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/Subscription/commentFeatured.ts rename to src/core/server/graph/resolvers/Subscription/commentFeatured.ts index 5a146b3cb..141524bce 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentFeatured.ts +++ b/src/core/server/graph/resolvers/Subscription/commentFeatured.ts @@ -1,4 +1,4 @@ -import { SubscriptionToCommentFeaturedResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { SubscriptionToCommentFeaturedResolver } from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentLeftModerationQueue.ts b/src/core/server/graph/resolvers/Subscription/commentLeftModerationQueue.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/Subscription/commentLeftModerationQueue.ts rename to src/core/server/graph/resolvers/Subscription/commentLeftModerationQueue.ts index 4e1367e20..a834a0aba 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentLeftModerationQueue.ts +++ b/src/core/server/graph/resolvers/Subscription/commentLeftModerationQueue.ts @@ -1,7 +1,7 @@ import { GQLMODERATION_QUEUE, SubscriptionToCommentLeftModerationQueueResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentReleased.ts b/src/core/server/graph/resolvers/Subscription/commentReleased.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/Subscription/commentReleased.ts rename to src/core/server/graph/resolvers/Subscription/commentReleased.ts index 4e420ccea..8649fe584 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentReleased.ts +++ b/src/core/server/graph/resolvers/Subscription/commentReleased.ts @@ -1,4 +1,4 @@ -import { SubscriptionToCommentReleasedResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { SubscriptionToCommentReleasedResolver } from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentReplyCreated.ts b/src/core/server/graph/resolvers/Subscription/commentReplyCreated.ts similarity index 93% rename from src/core/server/graph/tenant/resolvers/Subscription/commentReplyCreated.ts rename to src/core/server/graph/resolvers/Subscription/commentReplyCreated.ts index 012eb758d..b4493fe4f 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentReplyCreated.ts +++ b/src/core/server/graph/resolvers/Subscription/commentReplyCreated.ts @@ -1,4 +1,4 @@ -import { SubscriptionToCommentReplyCreatedResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { SubscriptionToCommentReplyCreatedResolver } from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/commentStatusUpdated.ts b/src/core/server/graph/resolvers/Subscription/commentStatusUpdated.ts similarity index 93% rename from src/core/server/graph/tenant/resolvers/Subscription/commentStatusUpdated.ts rename to src/core/server/graph/resolvers/Subscription/commentStatusUpdated.ts index 1804c69d2..dcd870c84 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/commentStatusUpdated.ts +++ b/src/core/server/graph/resolvers/Subscription/commentStatusUpdated.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_STATUS, SubscriptionToCommentStatusUpdatedResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { createIterator } from "./helpers"; import { diff --git a/src/core/server/graph/tenant/resolvers/Subscription/helpers.ts b/src/core/server/graph/resolvers/Subscription/helpers.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/Subscription/helpers.ts rename to src/core/server/graph/resolvers/Subscription/helpers.ts index 1d1ff7de0..697dcaffd 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/helpers.ts +++ b/src/core/server/graph/resolvers/Subscription/helpers.ts @@ -1,7 +1,7 @@ import { GraphQLResolveInfo } from "graphql"; import { withFilter } from "graphql-subscriptions"; -import TenantContext from "../../context"; +import GraphContext from "../../context"; import { SUBSCRIPTION_CHANNELS, SubscriptionPayload } from "./types"; type FilterFn = ( @@ -14,7 +14,7 @@ type FilterFn = ( type Resolver = ( source: TParent, args: TArgs, - ctx: TenantContext, + ctx: GraphContext, info: GraphQLResolveInfo ) => TResult; @@ -56,7 +56,7 @@ export function createSubscriptionChannelName( export function defaultFilterFn( source: TParent, args: TArgs, - ctx: TenantContext + ctx: GraphContext ): boolean { if (source.clientID && ctx.clientID && source.clientID === ctx.clientID) { return false; @@ -71,8 +71,8 @@ export function defaultFilterFn( * prevent double responses. */ export function createFilterFn( - filter?: FilterFn -): FilterFn { + filter?: FilterFn +): FilterFn { return filter ? // Combine the filters, preferring the defaultFilterFn first. (source, args, ctx, info) => { @@ -86,7 +86,7 @@ export function createFilterFn( } export interface CreateIteratorInput { - filter?: FilterFn; + filter?: FilterFn; } export function createIterator< diff --git a/src/core/server/graph/tenant/resolvers/Subscription/index.ts b/src/core/server/graph/resolvers/Subscription/index.ts similarity index 95% rename from src/core/server/graph/tenant/resolvers/Subscription/index.ts rename to src/core/server/graph/resolvers/Subscription/index.ts index e7283dc09..f2bb56c81 100644 --- a/src/core/server/graph/tenant/resolvers/Subscription/index.ts +++ b/src/core/server/graph/resolvers/Subscription/index.ts @@ -1,4 +1,4 @@ -import { GQLSubscriptionTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLSubscriptionTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { commentCreated } from "./commentCreated"; import { commentEnteredModerationQueue } from "./commentEnteredModerationQueue"; diff --git a/src/core/server/graph/tenant/resolvers/Subscription/types.ts b/src/core/server/graph/resolvers/Subscription/types.ts similarity index 100% rename from src/core/server/graph/tenant/resolvers/Subscription/types.ts rename to src/core/server/graph/resolvers/Subscription/types.ts diff --git a/src/core/server/graph/tenant/resolvers/SuspensionStatus.ts b/src/core/server/graph/resolvers/SuspensionStatus.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/SuspensionStatus.ts rename to src/core/server/graph/resolvers/SuspensionStatus.ts index efb8f4dc0..17b56e436 100644 --- a/src/core/server/graph/tenant/resolvers/SuspensionStatus.ts +++ b/src/core/server/graph/resolvers/SuspensionStatus.ts @@ -1,4 +1,4 @@ -import { GQLSuspensionStatusTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLSuspensionStatusTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export type SuspensionStatusInput = user.ConsolidatedSuspensionStatus & { diff --git a/src/core/server/graph/tenant/resolvers/SuspensionStatusHistory.ts b/src/core/server/graph/resolvers/SuspensionStatusHistory.ts similarity index 94% rename from src/core/server/graph/tenant/resolvers/SuspensionStatusHistory.ts rename to src/core/server/graph/resolvers/SuspensionStatusHistory.ts index a48d4c6f3..f7f25170d 100644 --- a/src/core/server/graph/tenant/resolvers/SuspensionStatusHistory.ts +++ b/src/core/server/graph/resolvers/SuspensionStatusHistory.ts @@ -1,4 +1,4 @@ -import { GQLSuspensionStatusHistoryTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLSuspensionStatusHistoryTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export const SuspensionStatusHistory: Required< diff --git a/src/core/server/graph/tenant/resolvers/Tag.ts b/src/core/server/graph/resolvers/Tag.ts similarity index 76% rename from src/core/server/graph/tenant/resolvers/Tag.ts rename to src/core/server/graph/resolvers/Tag.ts index 13523901d..e6baf15d7 100644 --- a/src/core/server/graph/tenant/resolvers/Tag.ts +++ b/src/core/server/graph/resolvers/Tag.ts @@ -1,4 +1,4 @@ -import { GQLTagTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLTagTypeResolver } from "coral-server/graph/schema/__generated__/types"; import { CommentTag } from "coral-server/models/comment/tag"; export const Tag: GQLTagTypeResolver = { diff --git a/src/core/server/graph/tenant/resolvers/User.ts b/src/core/server/graph/resolvers/User.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/User.ts rename to src/core/server/graph/resolvers/User.ts index 5372a1e0a..ccf878d94 100644 --- a/src/core/server/graph/tenant/resolvers/User.ts +++ b/src/core/server/graph/resolvers/User.ts @@ -1,10 +1,10 @@ import { GraphQLResolveInfo } from "graphql"; -import TenantContext from "coral-server/graph/tenant/context"; +import GraphContext from "coral-server/graph/context"; import { GQLUser, GQLUserTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; import { roleIsStaff } from "coral-server/models/user/helpers"; @@ -13,7 +13,7 @@ import { UserStatusInput } from "./UserStatus"; import { getRequestedFields } from "./util"; const maybeLoadOnlyIgnoredUserID = ( - ctx: TenantContext, + ctx: GraphContext, info: GraphQLResolveInfo, users?: user.IgnoredUser[] ) => { diff --git a/src/core/server/graph/tenant/resolvers/UserStatus.ts b/src/core/server/graph/resolvers/UserStatus.ts similarity index 96% rename from src/core/server/graph/tenant/resolvers/UserStatus.ts rename to src/core/server/graph/resolvers/UserStatus.ts index 72b9ce217..5c616929d 100644 --- a/src/core/server/graph/tenant/resolvers/UserStatus.ts +++ b/src/core/server/graph/resolvers/UserStatus.ts @@ -1,7 +1,7 @@ import { GQLUSER_STATUS, GQLUserStatusTypeResolver, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; import { BanStatusInput } from "./BanStatus"; diff --git a/src/core/server/graph/tenant/resolvers/UsernameHistory.ts b/src/core/server/graph/resolvers/UsernameHistory.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/UsernameHistory.ts rename to src/core/server/graph/resolvers/UsernameHistory.ts index 46622531d..575164a76 100644 --- a/src/core/server/graph/tenant/resolvers/UsernameHistory.ts +++ b/src/core/server/graph/resolvers/UsernameHistory.ts @@ -1,4 +1,4 @@ -import { GQLUsernameHistoryTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUsernameHistoryTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export const UsernameHistory: Required< diff --git a/src/core/server/graph/tenant/resolvers/UsernameStatus.ts b/src/core/server/graph/resolvers/UsernameStatus.ts similarity index 91% rename from src/core/server/graph/tenant/resolvers/UsernameStatus.ts rename to src/core/server/graph/resolvers/UsernameStatus.ts index e5150b2a5..5bd335524 100644 --- a/src/core/server/graph/tenant/resolvers/UsernameStatus.ts +++ b/src/core/server/graph/resolvers/UsernameStatus.ts @@ -1,4 +1,4 @@ -import { GQLUsernameStatusTypeResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUsernameStatusTypeResolver } from "coral-server/graph/schema/__generated__/types"; import * as user from "coral-server/models/user"; export type UsernameStatusInput = user.ConsolidatedUsernameStatus & { diff --git a/src/core/server/graph/tenant/resolvers/index.ts b/src/core/server/graph/resolvers/index.ts similarity index 92% rename from src/core/server/graph/tenant/resolvers/index.ts rename to src/core/server/graph/resolvers/index.ts index 97b57b9a5..941c1eff6 100644 --- a/src/core/server/graph/tenant/resolvers/index.ts +++ b/src/core/server/graph/resolvers/index.ts @@ -1,8 +1,8 @@ -import Cursor from "coral-server/graph/common/scalars/cursor"; -import Locale from "coral-server/graph/common/scalars/locale"; -import Time from "coral-server/graph/common/scalars/time"; +import Cursor from "coral-server/graph/scalars/cursor"; +import Locale from "coral-server/graph/scalars/locale"; +import Time from "coral-server/graph/scalars/time"; -import { GQLResolver } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLResolver } from "coral-server/graph/schema/__generated__/types"; import { ApproveCommentPayload } from "./ApproveCommentPayload"; import { AuthIntegrations } from "./AuthIntegrations"; diff --git a/src/core/server/graph/tenant/resolvers/util.ts b/src/core/server/graph/resolvers/util.ts similarity index 86% rename from src/core/server/graph/tenant/resolvers/util.ts rename to src/core/server/graph/resolvers/util.ts index 23c914c5c..328460c97 100644 --- a/src/core/server/graph/tenant/resolvers/util.ts +++ b/src/core/server/graph/resolvers/util.ts @@ -4,7 +4,7 @@ import { pull } from "lodash"; import { reconstructTenantURL } from "coral-server/app/url"; -import TenantContext from "../context"; +import GraphContext from "../context"; /** * getRequestedFields returns the fields in an array that are being queried for. @@ -16,6 +16,6 @@ export function getRequestedFields(info: GraphQLResolveInfo) { } export function reconstructTenantURLResolver(path: string) { - return (parent: T, args: {}, ctx: TenantContext) => + return (parent: T, args: {}, ctx: GraphContext) => reconstructTenantURL(ctx.config, ctx.tenant, ctx.req, path); } diff --git a/src/core/server/graph/common/scalars/cursor.spec.ts b/src/core/server/graph/scalars/cursor.spec.ts similarity index 100% rename from src/core/server/graph/common/scalars/cursor.spec.ts rename to src/core/server/graph/scalars/cursor.spec.ts diff --git a/src/core/server/graph/common/scalars/cursor.ts b/src/core/server/graph/scalars/cursor.ts similarity index 100% rename from src/core/server/graph/common/scalars/cursor.ts rename to src/core/server/graph/scalars/cursor.ts diff --git a/src/core/server/graph/common/scalars/locale.spec.ts b/src/core/server/graph/scalars/locale.spec.ts similarity index 100% rename from src/core/server/graph/common/scalars/locale.spec.ts rename to src/core/server/graph/scalars/locale.spec.ts diff --git a/src/core/server/graph/common/scalars/locale.ts b/src/core/server/graph/scalars/locale.ts similarity index 100% rename from src/core/server/graph/common/scalars/locale.ts rename to src/core/server/graph/scalars/locale.ts diff --git a/src/core/server/graph/common/scalars/time.ts b/src/core/server/graph/scalars/time.ts similarity index 100% rename from src/core/server/graph/common/scalars/time.ts rename to src/core/server/graph/scalars/time.ts diff --git a/src/core/server/graph/tenant/schema/index.ts b/src/core/server/graph/schema/index.ts similarity index 65% rename from src/core/server/graph/tenant/schema/index.ts rename to src/core/server/graph/schema/index.ts index df717134a..181284548 100644 --- a/src/core/server/graph/tenant/schema/index.ts +++ b/src/core/server/graph/schema/index.ts @@ -5,10 +5,10 @@ import { } from "graphql-tools"; import { loadSchema } from "coral-common/graphql"; -import auth from "coral-server/graph/common/directives/auth"; -import constraint from "coral-server/graph/common/directives/constraint"; -import rate from "coral-server/graph/tenant/directives/rate"; -import resolvers from "coral-server/graph/tenant/resolvers"; +import auth from "coral-server/graph/directives/auth"; +import constraint from "coral-server/graph/directives/constraint"; +import rate from "coral-server/graph/directives/rate"; +import resolvers from "coral-server/graph/resolvers"; export default function getTenantSchema() { const schema = loadSchema("tenant", resolvers as IResolvers); diff --git a/src/core/server/graph/tenant/schema/schema.graphql b/src/core/server/graph/schema/schema.graphql similarity index 100% rename from src/core/server/graph/tenant/schema/schema.graphql rename to src/core/server/graph/schema/schema.graphql diff --git a/src/core/server/graph/tenant/schema/schema.spec.ts b/src/core/server/graph/schema/schema.spec.ts similarity index 91% rename from src/core/server/graph/tenant/schema/schema.spec.ts rename to src/core/server/graph/schema/schema.spec.ts index f35054a90..638cc5644 100644 --- a/src/core/server/graph/tenant/schema/schema.spec.ts +++ b/src/core/server/graph/schema/schema.spec.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_FLAG_REASON, GQLFlagReasonActionCounts, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; type ExtractKeys = { [P in keyof T]: P }[keyof T]; type A = ExtractKeys; diff --git a/src/core/server/graph/tenant/subscriptions/publisher.ts b/src/core/server/graph/subscriptions/publisher.ts similarity index 93% rename from src/core/server/graph/tenant/subscriptions/publisher.ts rename to src/core/server/graph/subscriptions/publisher.ts index faf1815c2..79e46fb27 100644 --- a/src/core/server/graph/tenant/subscriptions/publisher.ts +++ b/src/core/server/graph/subscriptions/publisher.ts @@ -1,7 +1,7 @@ import { RedisPubSub } from "graphql-redis-subscriptions"; -import { createSubscriptionChannelName } from "coral-server/graph/tenant/resolvers/Subscription/helpers"; -import { SUBSCRIPTION_INPUT } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { createSubscriptionChannelName } from "coral-server/graph/resolvers/Subscription/helpers"; +import { SUBSCRIPTION_INPUT } from "coral-server/graph/resolvers/Subscription/types"; import logger from "coral-server/logger"; import { NotifierQueue } from "coral-server/queue/tasks/notifier"; import { SlackPublisher } from "coral-server/services/slack/publisher"; diff --git a/src/core/server/graph/common/subscriptions/pubsub.ts b/src/core/server/graph/subscriptions/pubsub.ts similarity index 100% rename from src/core/server/graph/common/subscriptions/pubsub.ts rename to src/core/server/graph/subscriptions/pubsub.ts diff --git a/src/core/server/graph/tenant/subscriptions/server.ts b/src/core/server/graph/subscriptions/server.ts similarity index 92% rename from src/core/server/graph/tenant/subscriptions/server.ts rename to src/core/server/graph/subscriptions/server.ts index 2320009dd..19ccc1187 100644 --- a/src/core/server/graph/tenant/subscriptions/server.ts +++ b/src/core/server/graph/subscriptions/server.ts @@ -29,27 +29,23 @@ import { RawQueryNotAuthorized, TenantNotFoundError, } from "coral-server/errors"; -import { - enrichError, - logError, - logQuery, -} from "coral-server/graph/common/extensions"; -import { getOperationMetadata } from "coral-server/graph/common/extensions/helpers"; -import { getPersistedQuery } from "coral-server/graph/common/persisted"; +import { enrichError, logError, logQuery } from "coral-server/graph/extensions"; +import { getOperationMetadata } from "coral-server/graph/extensions/helpers"; +import { getPersistedQuery } from "coral-server/graph/persisted"; import logger from "coral-server/logger"; import { PersistedQuery } from "coral-server/models/queries"; import { hasStaffRole } from "coral-server/models/user/helpers"; import { extractTokenFromRequest } from "coral-server/services/jwt"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; -import TenantContext, { TenantContextOptions } from "../context"; +import GraphContext, { GraphContextOptions } from "../context"; type OnConnectFn = ( params: OperationMessagePayload, socket: any, context: ConnectionContext -) => Promise; +) => Promise; export function extractTokenFromWSRequest( connectionParams: OperationMessagePayload, @@ -79,7 +75,7 @@ export function extractClientID(connectionParams: OperationMessagePayload) { } export type OnConnectOptions = RequireProperty< - Omit, + Omit, "signingConfig" >; @@ -107,7 +103,7 @@ export function onConnect(options: OnConnectOptions): OnConnectFn { } // Create some new options to store the tenant context details inside. - const opts: TenantContextOptions = { + const opts: GraphContextOptions = { ...options, // Disable caching with this Context to ensure that every call (besides) // to the tenant, is not cached, and is instead fresh. @@ -145,7 +141,7 @@ export function onConnect(options: OnConnectOptions): OnConnectFn { opts.clientID = clientID; } - return new TenantContext(opts); + return new GraphContext(opts); } catch (err) { if (err instanceof LiveUpdatesDisabled) { logger.info({ err }, "websocket connection rejected"); @@ -174,7 +170,7 @@ export function formatResponse( ) { return ( value: ExecutionResult, - { context, query }: ExecutionParams + { context, query }: ExecutionParams ) => { // Parse the query in order to extract operation metadata. if (typeof query === "string") { @@ -220,7 +216,7 @@ export type OnOperationOptions = FormatResponseOptions & export function onOperation(options: OnOperationOptions) { return async ( message: OperationMessage, - params: ExecutionParams + params: ExecutionParams ) => { // Handle the payload if it is a persisted query. const persisted = await getPersistedQuery( diff --git a/src/core/server/graph/tenant/context.ts b/src/core/server/graph/tenant/context.ts deleted file mode 100644 index a9e16d650..000000000 --- a/src/core/server/graph/tenant/context.ts +++ /dev/null @@ -1,76 +0,0 @@ -import CommonContext, { - CommonContextOptions, -} from "coral-server/graph/common/context"; -import { - createPublisher, - Publisher, -} from "coral-server/graph/tenant/subscriptions/publisher"; -import logger from "coral-server/logger"; -import { Tenant } from "coral-server/models/tenant"; -import { User } from "coral-server/models/user"; -import { MailerQueue } from "coral-server/queue/tasks/mailer"; -import { NotifierQueue } from "coral-server/queue/tasks/notifier"; -import { ScraperQueue } from "coral-server/queue/tasks/scraper"; -import { JWTSigningConfig } from "coral-server/services/jwt"; -import createSlackPublisher from "coral-server/services/slack/publisher"; -import TenantCache from "coral-server/services/tenant/cache"; - -import loaders from "./loaders"; -import mutators from "./mutators"; - -export interface TenantContextOptions extends CommonContextOptions { - tenant: Tenant; - tenantCache: TenantCache; - mailerQueue: MailerQueue; - notifierQueue: NotifierQueue; - scraperQueue: ScraperQueue; - signingConfig?: JWTSigningConfig; - clientID?: string; -} - -export default class TenantContext extends CommonContext { - public readonly tenant: Tenant; - public readonly tenantCache: TenantCache; - - public readonly mailerQueue: MailerQueue; - public readonly scraperQueue: ScraperQueue; - public readonly publisher: Publisher; - public readonly user?: User; - public readonly signingConfig?: JWTSigningConfig; - public readonly clientID?: string; - public readonly loaders: ReturnType; - public readonly mutators: ReturnType; - - constructor({ - tenant, - logger: log = logger, - notifierQueue, - ...options - }: TenantContextOptions) { - super({ - ...options, - lang: tenant.locale, - logger: logger.child({ tenantID: tenant.id }, true), - }); - - this.tenant = tenant; - this.tenantCache = options.tenantCache; - this.scraperQueue = options.scraperQueue; - this.mailerQueue = options.mailerQueue; - this.signingConfig = options.signingConfig; - this.clientID = options.clientID; - this.publisher = createPublisher({ - pubsub: this.pubsub, - slackPublisher: createSlackPublisher( - this.mongo, - this.config, - this.tenant - ), - notifierQueue, - tenantID: this.tenant.id, - clientID: this.clientID, - }); - this.loaders = loaders(this); - this.mutators = mutators(this); - } -} diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 756ab3516..0cfad477d 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -16,9 +16,9 @@ import { accessLogger, errorLogger } from "coral-server/app/middleware/logging"; import { notFoundMiddleware } from "coral-server/app/middleware/notFound"; import config, { Config } from "coral-server/config"; import startScheduledTasks, { ScheduledJobGroups } from "coral-server/cron"; -import { createPubSubClient } from "coral-server/graph/common/subscriptions/pubsub"; -import getTenantSchema from "coral-server/graph/tenant/schema"; -import { createSubscriptionServer } from "coral-server/graph/tenant/subscriptions/server"; +import getTenantSchema from "coral-server/graph/schema"; +import { createPubSubClient } from "coral-server/graph/subscriptions/pubsub"; +import { createSubscriptionServer } from "coral-server/graph/subscriptions/server"; import logger from "coral-server/logger"; import { createQueue, TaskQueue } from "coral-server/queue"; import { I18n } from "coral-server/services/i18n"; @@ -36,6 +36,7 @@ import { createRedisClient, } from "coral-server/services/redis"; import TenantCache from "coral-server/services/tenant/cache"; + import { isInstalled } from "./services/tenant"; export interface ServerOptions { diff --git a/src/core/server/models/action/comment.spec.ts b/src/core/server/models/action/comment.spec.ts index f69bc12b9..7ebda75d1 100644 --- a/src/core/server/models/action/comment.spec.ts +++ b/src/core/server/models/action/comment.spec.ts @@ -1,4 +1,4 @@ -import { GQLCOMMENT_FLAG_REASON } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_FLAG_REASON } from "coral-server/graph/schema/__generated__/types"; import { ACTION_TYPE, CommentAction, diff --git a/src/core/server/models/action/comment.ts b/src/core/server/models/action/comment.ts index 7d8f1b149..8a01efb26 100644 --- a/src/core/server/models/action/comment.ts +++ b/src/core/server/models/action/comment.ts @@ -12,7 +12,7 @@ import { GQLDontAgreeActionCounts, GQLFlagActionCounts, GQLReactionActionCounts, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import logger from "coral-server/logger"; import { Connection, diff --git a/src/core/server/models/action/moderation/comment.ts b/src/core/server/models/action/moderation/comment.ts index c6071031f..7f411ed03 100644 --- a/src/core/server/models/action/moderation/comment.ts +++ b/src/core/server/models/action/moderation/comment.ts @@ -2,7 +2,7 @@ import { Db } from "mongodb"; import uuid from "uuid"; import { Omit, Sub } from "coral-common/types"; -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { Connection, ConnectionInput, diff --git a/src/core/server/models/comment/comment.ts b/src/core/server/models/comment/comment.ts index 6192a3a59..cda32ec29 100644 --- a/src/core/server/models/comment/comment.ts +++ b/src/core/server/models/comment/comment.ts @@ -11,7 +11,7 @@ import { GQLCOMMENT_STATUS, GQLCommentTagCounts, GQLTAG, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import logger from "coral-server/logger"; import { EncodedCommentActionCounts, diff --git a/src/core/server/models/comment/constants.ts b/src/core/server/models/comment/constants.ts index b64d7a8fb..3df208cc0 100644 --- a/src/core/server/models/comment/constants.ts +++ b/src/core/server/models/comment/constants.ts @@ -1,4 +1,4 @@ -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; /** * PUBLISHED_STATUSES are the comment statuses that a Comment may have that would diff --git a/src/core/server/models/comment/helpers.ts b/src/core/server/models/comment/helpers.ts index ccd1097c6..f8aab82b0 100644 --- a/src/core/server/models/comment/helpers.ts +++ b/src/core/server/models/comment/helpers.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_STATUS, GQLTAG, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { calculateTotalPublishedCommentCount } from "../story"; import { Comment } from "./comment"; diff --git a/src/core/server/models/comment/tag.ts b/src/core/server/models/comment/tag.ts index 15ee7e6fa..002e18b40 100644 --- a/src/core/server/models/comment/tag.ts +++ b/src/core/server/models/comment/tag.ts @@ -1,4 +1,4 @@ -import { GQLTAG } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLTAG } from "coral-server/graph/schema/__generated__/types"; /** * CommentTag is used to represent a given Tag added to a Comment. diff --git a/src/core/server/models/invite.ts b/src/core/server/models/invite.ts index f82fc3f4b..585556f5a 100644 --- a/src/core/server/models/invite.ts +++ b/src/core/server/models/invite.ts @@ -2,7 +2,7 @@ import { Db } from "mongodb"; import uuid from "uuid"; import { Omit, Sub } from "coral-common/types"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { TenantResource } from "coral-server/models/tenant"; import { invites as collection } from "coral-server/services/mongodb/collections"; diff --git a/src/core/server/models/settings.ts b/src/core/server/models/settings.ts index 3b96c4aad..917549b93 100644 --- a/src/core/server/models/settings.ts +++ b/src/core/server/models/settings.ts @@ -11,7 +11,7 @@ import { GQLMODERATION_MODE, GQLOIDCAuthIntegration, GQLSettings, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; export type LiveConfiguration = Omit; diff --git a/src/core/server/models/story/counts/index.ts b/src/core/server/models/story/counts/index.ts index 3c08d4f4b..74d00da1d 100644 --- a/src/core/server/models/story/counts/index.ts +++ b/src/core/server/models/story/counts/index.ts @@ -6,7 +6,7 @@ import { Db } from "mongodb"; import { DeepPartial } from "coral-common/types"; import { dotize } from "coral-common/utils/dotize"; -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import logger from "coral-server/logger"; import { EncodedCommentActionCounts } from "coral-server/models/action/comment"; import { PUBLISHED_STATUSES } from "coral-server/models/comment/constants"; diff --git a/src/core/server/models/story/index.ts b/src/core/server/models/story/index.ts index d7724ec55..03adda3a0 100644 --- a/src/core/server/models/story/index.ts +++ b/src/core/server/models/story/index.ts @@ -10,7 +10,7 @@ import { import { GQLStoryMetadata, GQLStorySettings, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { Connection, ConnectionInput, diff --git a/src/core/server/models/tenant/helpers.ts b/src/core/server/models/tenant/helpers.ts index b28b4f212..35700774e 100644 --- a/src/core/server/models/tenant/helpers.ts +++ b/src/core/server/models/tenant/helpers.ts @@ -7,7 +7,7 @@ import { GQLFEATURE_FLAG, GQLReactionConfiguration, GQLStaffConfiguration, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { SSOKey } from "../settings"; import { Tenant } from "./tenant"; diff --git a/src/core/server/models/tenant/tenant.ts b/src/core/server/models/tenant/tenant.ts index 573d3ce47..77a9451c0 100644 --- a/src/core/server/models/tenant/tenant.ts +++ b/src/core/server/models/tenant/tenant.ts @@ -14,7 +14,7 @@ import { GQLFEATURE_FLAG, GQLMODERATION_MODE, GQLSettings, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { generateSSOKey, diff --git a/src/core/server/models/user/constants.ts b/src/core/server/models/user/constants.ts index 2202403cf..a0717ecae 100644 --- a/src/core/server/models/user/constants.ts +++ b/src/core/server/models/user/constants.ts @@ -1,4 +1,4 @@ -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; export const STAFF_ROLES = [ GQLUSER_ROLE.ADMIN, diff --git a/src/core/server/models/user/helpers.ts b/src/core/server/models/user/helpers.ts index 20c63f0a5..96fa6244e 100644 --- a/src/core/server/models/user/helpers.ts +++ b/src/core/server/models/user/helpers.ts @@ -1,6 +1,6 @@ import { isEqual } from "lodash"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { SSOUserProfile } from "coral-server/app/middleware/passport/strategies/verifiers/sso"; import { STAFF_ROLES } from "./constants"; diff --git a/src/core/server/models/user/user.ts b/src/core/server/models/user/user.ts index c146a252c..83df69d58 100644 --- a/src/core/server/models/user/user.ts +++ b/src/core/server/models/user/user.ts @@ -40,7 +40,7 @@ import { GQLUSER_ROLE, GQLUsernameStatus, GQLUserNotificationSettings, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { CommentStatusCounts, @@ -472,10 +472,6 @@ export interface User extends TenantResource { */ deletedAt?: Date; - /** - * commentCounts are the tallies of all comment statuses for this - * user. - */ commentCounts: UserCommentCounts; } diff --git a/src/core/server/queue/tasks/notifier/index.ts b/src/core/server/queue/tasks/notifier/index.ts index 45f8b3b07..8e384a6c2 100644 --- a/src/core/server/queue/tasks/notifier/index.ts +++ b/src/core/server/queue/tasks/notifier/index.ts @@ -3,7 +3,7 @@ import { groupBy } from "lodash"; import { Db } from "mongodb"; import { Config } from "coral-server/config"; -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import logger from "coral-server/logger"; import Task from "coral-server/queue/Task"; import { MailerQueue } from "coral-server/queue/tasks/mailer"; diff --git a/src/core/server/queue/tasks/notifier/messages.ts b/src/core/server/queue/tasks/notifier/messages.ts index a4707d883..f11ca75c3 100644 --- a/src/core/server/queue/tasks/notifier/messages.ts +++ b/src/core/server/queue/tasks/notifier/messages.ts @@ -1,5 +1,5 @@ -import { SUBSCRIPTION_INPUT } from "coral-server/graph/tenant/resolvers/Subscription/types"; -import { GQLDIGEST_FREQUENCY } from "coral-server/graph/tenant/schema/__generated__/types"; +import { SUBSCRIPTION_INPUT } from "coral-server/graph/resolvers/Subscription/types"; +import { GQLDIGEST_FREQUENCY } from "coral-server/graph/schema/__generated__/types"; import logger from "coral-server/logger"; import { NotificationCategory } from "coral-server/services/notifications/categories"; import NotificationContext from "coral-server/services/notifications/context"; diff --git a/src/core/server/queue/tasks/notifier/processor.ts b/src/core/server/queue/tasks/notifier/processor.ts index a40521760..9e7b4f5f8 100644 --- a/src/core/server/queue/tasks/notifier/processor.ts +++ b/src/core/server/queue/tasks/notifier/processor.ts @@ -5,7 +5,7 @@ import { Config } from "coral-server/config"; import { SUBSCRIPTION_CHANNELS, SUBSCRIPTION_INPUT, -} from "coral-server/graph/tenant/resolvers/Subscription/types"; +} from "coral-server/graph/resolvers/Subscription/types"; import logger from "coral-server/logger"; import { MailerQueue } from "coral-server/queue/tasks/mailer"; import { JWTSigningConfig } from "coral-server/services/jwt"; diff --git a/src/core/server/services/comments/actions.ts b/src/core/server/services/comments/actions.ts index c6a68d70a..8ad550381 100644 --- a/src/core/server/services/comments/actions.ts +++ b/src/core/server/services/comments/actions.ts @@ -2,8 +2,8 @@ import { Db } from "mongodb"; import { Omit } from "coral-common/types"; import { CommentNotFoundError } from "coral-server/errors"; -import { GQLCOMMENT_FLAG_REPORTED_REASON } from "coral-server/graph/tenant/schema/__generated__/types"; -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +import { GQLCOMMENT_FLAG_REPORTED_REASON } from "coral-server/graph/schema/__generated__/types"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import { ACTION_TYPE, CommentAction, diff --git a/src/core/server/services/comments/comments.ts b/src/core/server/services/comments/comments.ts index f13cf9885..5e9589ae9 100644 --- a/src/core/server/services/comments/comments.ts +++ b/src/core/server/services/comments/comments.ts @@ -2,7 +2,7 @@ import { DateTime } from "luxon"; import { Db } from "mongodb"; import { CommentNotFoundError } from "coral-server/errors"; -import { GQLTAG } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLTAG } from "coral-server/graph/schema/__generated__/types"; import { addCommentTag, removeCommentTag, diff --git a/src/core/server/services/comments/moderation/counts.spec.ts b/src/core/server/services/comments/moderation/counts.spec.ts index acda37d06..59e533ce0 100644 --- a/src/core/server/services/comments/moderation/counts.spec.ts +++ b/src/core/server/services/comments/moderation/counts.spec.ts @@ -1,4 +1,4 @@ -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { calculateCountsDiff } from "./counts"; it("allows transition from NONE to APPROVED", () => { diff --git a/src/core/server/services/comments/moderation/counts.ts b/src/core/server/services/comments/moderation/counts.ts index 88afb4099..d3a23a726 100644 --- a/src/core/server/services/comments/moderation/counts.ts +++ b/src/core/server/services/comments/moderation/counts.ts @@ -1,4 +1,4 @@ -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { decodeActionCounts } from "coral-server/models/action/comment"; import { Comment } from "coral-server/models/comment"; import { CommentModerationQueueCounts } from "coral-server/models/story"; diff --git a/src/core/server/services/comments/pipeline/phases/detectLinks.ts b/src/core/server/services/comments/pipeline/phases/detectLinks.ts index 567153f2b..cc940c23c 100755 --- a/src/core/server/services/comments/pipeline/phases/detectLinks.ts +++ b/src/core/server/services/comments/pipeline/phases/detectLinks.ts @@ -2,7 +2,7 @@ import { DeepPartial } from "coral-common/types"; import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { ACTION_TYPE } from "coral-server/models/action/comment"; import { RevisionMetadata } from "coral-server/models/comment"; import { GlobalModerationSettings } from "coral-server/models/settings"; diff --git a/src/core/server/services/comments/pipeline/phases/preModerate.ts b/src/core/server/services/comments/pipeline/phases/preModerate.ts index 3bb267c04..aaad2295d 100755 --- a/src/core/server/services/comments/pipeline/phases/preModerate.ts +++ b/src/core/server/services/comments/pipeline/phases/preModerate.ts @@ -2,7 +2,7 @@ import { DeepPartial } from "coral-common/types"; import { GQLCOMMENT_STATUS, GQLMODERATION_MODE, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { GlobalModerationSettings } from "coral-server/models/settings"; import { IntermediateModerationPhase, diff --git a/src/core/server/services/comments/pipeline/phases/preModerateUser.ts b/src/core/server/services/comments/pipeline/phases/preModerateUser.ts index c517befdb..813ad4188 100644 --- a/src/core/server/services/comments/pipeline/phases/preModerateUser.ts +++ b/src/core/server/services/comments/pipeline/phases/preModerateUser.ts @@ -1,4 +1,4 @@ -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { IntermediateModerationPhase, IntermediatePhaseResult, diff --git a/src/core/server/services/comments/pipeline/phases/premodNewCommenter.ts b/src/core/server/services/comments/pipeline/phases/premodNewCommenter.ts index 57eae4224..d1e34a56f 100644 --- a/src/core/server/services/comments/pipeline/phases/premodNewCommenter.ts +++ b/src/core/server/services/comments/pipeline/phases/premodNewCommenter.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { ACTION_TYPE } from "coral-server/models/action/comment"; import { IntermediatePhaseResult, diff --git a/src/core/server/services/comments/pipeline/phases/recentCommentHistory.ts b/src/core/server/services/comments/pipeline/phases/recentCommentHistory.ts index 7f19e5f6e..4b0daae5e 100644 --- a/src/core/server/services/comments/pipeline/phases/recentCommentHistory.ts +++ b/src/core/server/services/comments/pipeline/phases/recentCommentHistory.ts @@ -3,7 +3,7 @@ import { DateTime } from "luxon"; import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { ACTION_TYPE } from "coral-server/models/action/comment"; import { calculateRejectionRate, diff --git a/src/core/server/services/comments/pipeline/phases/repeatPost.ts b/src/core/server/services/comments/pipeline/phases/repeatPost.ts index d000eafc3..5a60a33f5 100644 --- a/src/core/server/services/comments/pipeline/phases/repeatPost.ts +++ b/src/core/server/services/comments/pipeline/phases/repeatPost.ts @@ -12,7 +12,7 @@ import { retrieveUserLastComment } from "coral-server/services/users"; import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; export const repeatPost: IntermediateModerationPhase = async ({ mongo, diff --git a/src/core/server/services/comments/pipeline/phases/spam.ts b/src/core/server/services/comments/pipeline/phases/spam.ts index 6e96e01d4..0126f2e8f 100644 --- a/src/core/server/services/comments/pipeline/phases/spam.ts +++ b/src/core/server/services/comments/pipeline/phases/spam.ts @@ -10,7 +10,7 @@ import { import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; export const spam: IntermediateModerationPhase = async ({ story, diff --git a/src/core/server/services/comments/pipeline/phases/staff.ts b/src/core/server/services/comments/pipeline/phases/staff.ts index cef1a4efd..cc100a2c2 100755 --- a/src/core/server/services/comments/pipeline/phases/staff.ts +++ b/src/core/server/services/comments/pipeline/phases/staff.ts @@ -2,7 +2,7 @@ import { GQLCOMMENT_STATUS, GQLTAG, GQLUSER_ROLE, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { IntermediateModerationPhase, IntermediatePhaseResult, diff --git a/src/core/server/services/comments/pipeline/phases/toxic.ts b/src/core/server/services/comments/pipeline/phases/toxic.ts index 4293afcd8..a2303520e 100644 --- a/src/core/server/services/comments/pipeline/phases/toxic.ts +++ b/src/core/server/services/comments/pipeline/phases/toxic.ts @@ -26,7 +26,7 @@ import { GQLCOMMENT_STATUS, GQLFEATURE_FLAG, GQLPerspectiveExternalIntegration, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; export const toxic: IntermediateModerationPhase = async ({ tenant, diff --git a/src/core/server/services/comments/pipeline/phases/wordList.ts b/src/core/server/services/comments/pipeline/phases/wordList.ts index f72b22b66..5abe5d655 100755 --- a/src/core/server/services/comments/pipeline/phases/wordList.ts +++ b/src/core/server/services/comments/pipeline/phases/wordList.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { ACTION_TYPE } from "coral-server/models/action/comment"; import { IntermediateModerationPhase, diff --git a/src/core/server/services/comments/pipeline/pipeline.spec.ts b/src/core/server/services/comments/pipeline/pipeline.spec.ts index 956e68d2a..f7d9cad25 100644 --- a/src/core/server/services/comments/pipeline/pipeline.spec.ts +++ b/src/core/server/services/comments/pipeline/pipeline.spec.ts @@ -1,7 +1,7 @@ import { GQLCOMMENT_FLAG_REASON, GQLCOMMENT_STATUS, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { ACTION_TYPE } from "coral-server/models/action/comment"; import { compose, ModerationPhaseContext } from "./pipeline"; diff --git a/src/core/server/services/comments/pipeline/pipeline.ts b/src/core/server/services/comments/pipeline/pipeline.ts index 062a12a26..9e6e8d6df 100644 --- a/src/core/server/services/comments/pipeline/pipeline.ts +++ b/src/core/server/services/comments/pipeline/pipeline.ts @@ -16,7 +16,7 @@ import { User } from "coral-server/models/user"; import { AugmentedRedis } from "coral-server/services/redis"; import { Request } from "coral-server/types/express"; -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { moderationPhases } from "./phases"; diff --git a/src/core/server/services/events/comments.ts b/src/core/server/services/events/comments.ts index 4ebdff5e0..8ee8cc17f 100644 --- a/src/core/server/services/events/comments.ts +++ b/src/core/server/services/events/comments.ts @@ -1,9 +1,9 @@ -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import { GQLCOMMENT_STATUS, GQLMODERATION_QUEUE, -} from "coral-server/graph/tenant/schema/__generated__/types"; -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +} from "coral-server/graph/schema/__generated__/types"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import { Comment, hasPublishedStatus } from "coral-server/models/comment"; import { CommentModerationQueueCounts } from "coral-server/models/story/counts"; diff --git a/src/core/server/services/migrate/migrations/1573073491825_sso_tokens.ts b/src/core/server/services/migrate/migrations/1573073491825_sso_tokens.ts index 04962809d..071b8034b 100644 --- a/src/core/server/services/migrate/migrations/1573073491825_sso_tokens.ts +++ b/src/core/server/services/migrate/migrations/1573073491825_sso_tokens.ts @@ -5,7 +5,7 @@ import { generateSSOKey, Tenant } from "coral-server/models/tenant"; import Migration from "coral-server/services/migrate/migration"; import collections from "coral-server/services/mongodb/collections"; -import { GQLTime } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLTime } from "coral-server/graph/schema/__generated__/types"; import { MigrationError } from "../error"; diff --git a/src/core/server/services/migrate/migrations/1575649180_user_comment_counts.ts b/src/core/server/services/migrate/migrations/1575649180_user_comment_counts.ts index 4cc454a3e..98ea9b4a7 100644 --- a/src/core/server/services/migrate/migrations/1575649180_user_comment_counts.ts +++ b/src/core/server/services/migrate/migrations/1575649180_user_comment_counts.ts @@ -7,7 +7,7 @@ import { import Migration from "coral-server/services/migrate/migration"; import collections from "coral-server/services/mongodb/collections"; -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; const BATCH_SIZE = 500; diff --git a/src/core/server/services/notifications/categories/category.ts b/src/core/server/services/notifications/categories/category.ts index e25a200c8..81026f908 100644 --- a/src/core/server/services/notifications/categories/category.ts +++ b/src/core/server/services/notifications/categories/category.ts @@ -1,7 +1,7 @@ import { SUBSCRIPTION_CHANNELS, SUBSCRIPTION_INPUT, -} from "coral-server/graph/tenant/resolvers/Subscription/types"; +} from "coral-server/graph/resolvers/Subscription/types"; import NotificationContext from "../context"; import { Notification } from "../notification"; diff --git a/src/core/server/services/notifications/categories/featured.ts b/src/core/server/services/notifications/categories/featured.ts index 2b65d5699..844359dd1 100644 --- a/src/core/server/services/notifications/categories/featured.ts +++ b/src/core/server/services/notifications/categories/featured.ts @@ -1,5 +1,5 @@ -import { CommentFeaturedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentFeatured"; -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { CommentFeaturedInput } from "coral-server/graph/resolvers/Subscription/commentFeatured"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import { hasPublishedStatus } from "coral-server/models/comment"; import { getStoryTitle, getURLWithCommentID } from "coral-server/models/story"; diff --git a/src/core/server/services/notifications/categories/moderation.ts b/src/core/server/services/notifications/categories/moderation.ts index 7632cbe96..1ee4b6909 100644 --- a/src/core/server/services/notifications/categories/moderation.ts +++ b/src/core/server/services/notifications/categories/moderation.ts @@ -1,8 +1,8 @@ -import { CommentStatusUpdatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentStatusUpdated"; -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { CommentStatusUpdatedInput } from "coral-server/graph/resolvers/Subscription/commentStatusUpdated"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import { hasModeratorStatus } from "coral-server/models/comment"; -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { getURLWithCommentID } from "coral-server/models/story"; import NotificationContext from "../context"; import { Notification } from "../notification"; diff --git a/src/core/server/services/notifications/categories/reply.ts b/src/core/server/services/notifications/categories/reply.ts index bf55bf06d..8816f48c4 100644 --- a/src/core/server/services/notifications/categories/reply.ts +++ b/src/core/server/services/notifications/categories/reply.ts @@ -1,6 +1,6 @@ -import { CommentReplyCreatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentReplyCreated"; -import { CommentStatusUpdatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentStatusUpdated"; -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { CommentReplyCreatedInput } from "coral-server/graph/resolvers/Subscription/commentReplyCreated"; +import { CommentStatusUpdatedInput } from "coral-server/graph/resolvers/Subscription/commentStatusUpdated"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import { hasPublishedStatus } from "coral-server/models/comment"; import { getStoryTitle, getURLWithCommentID } from "coral-server/models/story"; diff --git a/src/core/server/services/notifications/categories/staffReply.ts b/src/core/server/services/notifications/categories/staffReply.ts index 78ac6ced0..d561f4322 100644 --- a/src/core/server/services/notifications/categories/staffReply.ts +++ b/src/core/server/services/notifications/categories/staffReply.ts @@ -1,6 +1,6 @@ -import { CommentReplyCreatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentReplyCreated"; -import { CommentStatusUpdatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentStatusUpdated"; -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { CommentReplyCreatedInput } from "coral-server/graph/resolvers/Subscription/commentReplyCreated"; +import { CommentStatusUpdatedInput } from "coral-server/graph/resolvers/Subscription/commentStatusUpdated"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import { hasPublishedStatus } from "coral-server/models/comment"; import { getStoryTitle, getURLWithCommentID } from "coral-server/models/story"; import { hasStaffRole } from "coral-server/models/user/helpers"; diff --git a/src/core/server/services/notifications/context.ts b/src/core/server/services/notifications/context.ts index 2e5d5e677..2e6c3fa4b 100644 --- a/src/core/server/services/notifications/context.ts +++ b/src/core/server/services/notifications/context.ts @@ -2,7 +2,7 @@ import DataLoader from "dataloader"; import { Db } from "mongodb"; import { Config } from "coral-server/config"; -import { GQLDIGEST_FREQUENCY } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLDIGEST_FREQUENCY } from "coral-server/graph/schema/__generated__/types"; import logger, { Logger } from "coral-server/logger"; import { Comment, retrieveManyComments } from "coral-server/models/comment"; import { retrieveManyStories, Story } from "coral-server/models/story"; diff --git a/src/core/server/services/queries/cache.ts b/src/core/server/services/queries/cache.ts index d979d5b25..555907c3c 100644 --- a/src/core/server/services/queries/cache.ts +++ b/src/core/server/services/queries/cache.ts @@ -2,7 +2,7 @@ import DataLoader from "dataloader"; import LRU from "lru-cache"; import { Db } from "mongodb"; -import { loadPersistedQueries } from "coral-server/graph/common/persisted"; +import { loadPersistedQueries } from "coral-server/graph/persisted"; import logger from "coral-server/logger"; import { getQueries, diff --git a/src/core/server/services/slack/publisher.ts b/src/core/server/services/slack/publisher.ts index edab8e084..c83bb8ecc 100644 --- a/src/core/server/services/slack/publisher.ts +++ b/src/core/server/services/slack/publisher.ts @@ -2,14 +2,14 @@ import { Db } from "mongodb"; import { reconstructTenantURL } from "coral-server/app/url"; import { Config } from "coral-server/config"; -import { CommentCreatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentCreated"; -import { CommentEnteredModerationQueueInput } from "coral-server/graph/tenant/resolvers/Subscription/commentEnteredModerationQueue"; -import { CommentFeaturedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentFeatured"; -import { CommentLeftModerationQueueInput } from "coral-server/graph/tenant/resolvers/Subscription/commentLeftModerationQueue"; -import { CommentReleasedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentReleased"; -import { CommentReplyCreatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentReplyCreated"; -import { CommentStatusUpdatedInput } from "coral-server/graph/tenant/resolvers/Subscription/commentStatusUpdated"; -import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/tenant/resolvers/Subscription/types"; +import { CommentCreatedInput } from "coral-server/graph/resolvers/Subscription/commentCreated"; +import { CommentEnteredModerationQueueInput } from "coral-server/graph/resolvers/Subscription/commentEnteredModerationQueue"; +import { CommentFeaturedInput } from "coral-server/graph/resolvers/Subscription/commentFeatured"; +import { CommentLeftModerationQueueInput } from "coral-server/graph/resolvers/Subscription/commentLeftModerationQueue"; +import { CommentReleasedInput } from "coral-server/graph/resolvers/Subscription/commentReleased"; +import { CommentReplyCreatedInput } from "coral-server/graph/resolvers/Subscription/commentReplyCreated"; +import { CommentStatusUpdatedInput } from "coral-server/graph/resolvers/Subscription/commentStatusUpdated"; +import { SUBSCRIPTION_CHANNELS } from "coral-server/graph/resolvers/Subscription/types"; import logger from "coral-server/logger"; import { getLatestRevision } from "coral-server/models/comment/helpers"; import { @@ -18,7 +18,7 @@ import { } from "coral-server/models/story/helpers"; import { Tenant } from "coral-server/models/tenant"; -import { GQLMODERATION_QUEUE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLMODERATION_QUEUE } from "coral-server/graph/schema/__generated__/types"; import SlackContext from "./context"; diff --git a/src/core/server/services/stories/scraper/scraper.ts b/src/core/server/services/stories/scraper/scraper.ts index 56eb93ef4..4ea1b0e23 100644 --- a/src/core/server/services/stories/scraper/scraper.ts +++ b/src/core/server/services/stories/scraper/scraper.ts @@ -15,7 +15,7 @@ import logger from "coral-server/logger"; import { retrieveStory, updateStory } from "coral-server/models/story"; import { retrieveTenant } from "coral-server/models/tenant"; -import { GQLStoryMetadata } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLStoryMetadata } from "coral-server/graph/schema/__generated__/types"; import abortAfter from "./abortAfter"; import { modifiedScraper } from "./rules/modified"; diff --git a/src/core/server/services/tenant/index.ts b/src/core/server/services/tenant/index.ts index 5fef05ae5..a1e080247 100644 --- a/src/core/server/services/tenant/index.ts +++ b/src/core/server/services/tenant/index.ts @@ -24,7 +24,7 @@ import { GQLFEATURE_FLAG, GQLSettingsInput, GQLSettingsWordListInput, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import TenantCache from "./cache"; diff --git a/src/core/server/services/users/auth/invite.ts b/src/core/server/services/users/auth/invite.ts index 3583d60c0..65972d575 100644 --- a/src/core/server/services/users/auth/invite.ts +++ b/src/core/server/services/users/auth/invite.ts @@ -36,7 +36,7 @@ import { InviteTokenExpired, TokenInvalidError, } from "coral-server/errors"; -import { GQLUSER_ROLE } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { validateEmail, validatePassword, validateUsername } from "../helpers"; export interface InviteToken extends Required { diff --git a/src/core/server/services/users/users.ts b/src/core/server/services/users/users.ts index 08fd8bfbf..b8d17970b 100644 --- a/src/core/server/services/users/users.ts +++ b/src/core/server/services/users/users.ts @@ -28,7 +28,7 @@ import { import { GQLAuthIntegrations, GQLUSER_ROLE, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import logger from "coral-server/logger"; import { Comment, retrieveComment } from "coral-server/models/comment"; import { Tenant } from "coral-server/models/tenant"; diff --git a/src/core/server/stacks/approveComment.ts b/src/core/server/stacks/approveComment.ts index 3e2732721..f41fb56c6 100644 --- a/src/core/server/stacks/approveComment.ts +++ b/src/core/server/stacks/approveComment.ts @@ -1,11 +1,11 @@ import { Db } from "mongodb"; -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import { Tenant } from "coral-server/models/tenant"; import { moderate } from "coral-server/services/comments/moderation"; import { AugmentedRedis } from "coral-server/services/redis"; -import { GQLCOMMENT_STATUS } from "coral-server/graph/tenant/schema/__generated__/types"; +import { GQLCOMMENT_STATUS } from "coral-server/graph/schema/__generated__/types"; import { publishChanges, updateAllCounts } from "./helpers"; diff --git a/src/core/server/stacks/createComment.ts b/src/core/server/stacks/createComment.ts index bb9124911..5ae358a4c 100644 --- a/src/core/server/stacks/createComment.ts +++ b/src/core/server/stacks/createComment.ts @@ -8,7 +8,7 @@ import { CoralError, StoryNotFoundError, } from "coral-server/errors"; -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import logger from "coral-server/logger"; import { encodeActionCounts, diff --git a/src/core/server/stacks/editComment.ts b/src/core/server/stacks/editComment.ts index dee56eb2e..f936e32fe 100644 --- a/src/core/server/stacks/editComment.ts +++ b/src/core/server/stacks/editComment.ts @@ -4,7 +4,7 @@ import { Db } from "mongodb"; import { Omit } from "coral-common/types"; import { Config } from "coral-server/config"; import { CommentNotFoundError, StoryNotFoundError } from "coral-server/errors"; -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import logger from "coral-server/logger"; import { encodeActionCounts, diff --git a/src/core/server/stacks/helpers/publishChanges.ts b/src/core/server/stacks/helpers/publishChanges.ts index a42595f54..7fb87dc34 100644 --- a/src/core/server/stacks/helpers/publishChanges.ts +++ b/src/core/server/stacks/helpers/publishChanges.ts @@ -1,4 +1,4 @@ -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import { Comment, hasModeratorStatus, diff --git a/src/core/server/stacks/rejectComment.ts b/src/core/server/stacks/rejectComment.ts index e77c1eae1..b96bda49d 100644 --- a/src/core/server/stacks/rejectComment.ts +++ b/src/core/server/stacks/rejectComment.ts @@ -1,6 +1,6 @@ import { Db } from "mongodb"; -import { Publisher } from "coral-server/graph/tenant/subscriptions/publisher"; +import { Publisher } from "coral-server/graph/subscriptions/publisher"; import { hasTag } from "coral-server/models/comment"; import { Tenant } from "coral-server/models/tenant"; import { removeTag } from "coral-server/services/comments"; @@ -10,7 +10,7 @@ import { AugmentedRedis } from "coral-server/services/redis"; import { GQLCOMMENT_STATUS, GQLTAG, -} from "coral-server/graph/tenant/schema/__generated__/types"; +} from "coral-server/graph/schema/__generated__/types"; import { publishChanges, updateAllCounts } from "./helpers";