diff --git a/packages/api/src/apollo.ts b/packages/api/src/apollo.ts index b4f8c1977..fc8923d72 100644 --- a/packages/api/src/apollo.ts +++ b/packages/api/src/apollo.ts @@ -12,14 +12,14 @@ import { ExpressContext } from 'apollo-server-express/dist/ApolloServer' import * as jwt from 'jsonwebtoken' import { EntityManager } from 'typeorm' import { promisify } from 'util' -import { createPubSubClient } from './datalayer/pubsub' +import { AppDataSource } from './data-source' import { sanitizeDirectiveTransformer } from './directives' import { env } from './env' +import { createPubSubClient } from './pubsub' import { functionResolvers } from './resolvers/function_resolvers' import { ClaimsToSet, ResolverContext } from './resolvers/types' import ScalarResolvers from './scalars' import typeDefs from './schema' -import { AppDataSource } from './data-source' import { tracer } from './tracing' import { getClaimsByToken, setAuthInCookie } from './utils/auth' import { SetClaimsRole } from './utils/dictionary' diff --git a/packages/api/src/data-source.ts b/packages/api/src/data-source.ts index 88425c26f..c944ff5a8 100644 --- a/packages/api/src/data-source.ts +++ b/packages/api/src/data-source.ts @@ -16,7 +16,7 @@ export const AppDataSource = new DataSource({ subscribers: [__dirname + '/events/**/*{.js,.ts}'], namingStrategy: new SnakeNamingStrategy(), logger: new CustomTypeOrmLogger(), - // cache: true, - connectTimeoutMS: 60000, // 60 seconds - maxQueryExecutionTime: 60000, // 60 seconds + cache: true, + connectTimeoutMS: 40000, // 40 seconds + maxQueryExecutionTime: 10000, // 10 seconds }) diff --git a/packages/api/src/elastic/highlights.ts b/packages/api/src/elastic/highlights.ts index 3d0808c04..431568c7d 100644 --- a/packages/api/src/elastic/highlights.ts +++ b/packages/api/src/elastic/highlights.ts @@ -1,5 +1,5 @@ import { errors } from '@elastic/elasticsearch' -import { EntityType } from '../datalayer/pubsub' +import { EntityType } from '../pubsub' import { SortBy, SortOrder, SortParams } from '../utils/search' import { client, INDEX_ALIAS, logger } from './index' import { diff --git a/packages/api/src/elastic/labels.ts b/packages/api/src/elastic/labels.ts index 5864a0dff..d66cdc85f 100644 --- a/packages/api/src/elastic/labels.ts +++ b/packages/api/src/elastic/labels.ts @@ -1,5 +1,5 @@ import { errors } from '@elastic/elasticsearch' -import { EntityType } from '../datalayer/pubsub' +import { EntityType } from '../pubsub' import { client, INDEX_ALIAS, logger } from './index' import { Label, PageContext } from './types' diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index bd6b59e32..30e069652 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -1,7 +1,7 @@ import { errors } from '@elastic/elasticsearch' import { BuiltQuery, ESBuilder, esBuilder } from 'elastic-ts' -import { EntityType } from '../datalayer/pubsub' import { BulkActionType } from '../generated/graphql' +import { EntityType } from '../pubsub' import { wordsCount } from '../utils/helpers' import { DateFilter, diff --git a/packages/api/src/elastic/types.ts b/packages/api/src/elastic/types.ts index 6613775f3..06f769bb6 100644 --- a/packages/api/src/elastic/types.ts +++ b/packages/api/src/elastic/types.ts @@ -1,5 +1,5 @@ // Define the type of the body for the Search request -import { PubsubClient } from '../datalayer/pubsub' +import { PubsubClient } from '../pubsub' import { PickTuple } from '../util' import { DateFilter, diff --git a/packages/api/src/events/user/user_created.ts b/packages/api/src/events/user/user_created.ts index d73383dae..c5efee193 100644 --- a/packages/api/src/events/user/user_created.ts +++ b/packages/api/src/events/user/user_created.ts @@ -3,8 +3,9 @@ import { EventSubscriber, InsertEvent, } from 'typeorm' -import { createPubSubClient } from '../../datalayer/pubsub' import { Profile } from '../../entity/profile' +import { env } from '../../env' +import { createPubSubClient } from '../../pubsub' import { addPopularReadsForNewUser } from '../../services/popular_reads' import { IntercomClient } from '../../utils/intercom' diff --git a/packages/api/src/datalayer/pubsub.ts b/packages/api/src/pubsub.ts similarity index 96% rename from packages/api/src/datalayer/pubsub.ts rename to packages/api/src/pubsub.ts index 82eff598b..6b432753b 100644 --- a/packages/api/src/datalayer/pubsub.ts +++ b/packages/api/src/pubsub.ts @@ -1,8 +1,8 @@ import { PubSub } from '@google-cloud/pubsub' -import { env } from '../env' -import { ReportType } from '../generated/graphql' import express from 'express' -import { buildLogger } from '../utils/logger' +import { env } from './env' +import { ReportType } from './generated/graphql' +import { buildLogger } from './utils/logger' const logger = buildLogger('pubsub') diff --git a/packages/api/src/resolvers/labels/index.ts b/packages/api/src/resolvers/labels/index.ts index 473fb8d71..1d23b9011 100644 --- a/packages/api/src/resolvers/labels/index.ts +++ b/packages/api/src/resolvers/labels/index.ts @@ -1,6 +1,5 @@ import { Between } from 'typeorm' import { AppDataSource } from '../../data-source' -import { createPubSubClient } from '../../datalayer/pubsub' import { getHighlightById } from '../../elastic/highlights' import { deleteLabel, @@ -38,6 +37,7 @@ import { UpdateLabelErrorCode, UpdateLabelSuccess, } from '../../generated/graphql' +import { createPubSubClient } from '../../pubsub' import { getRepository, setClaims } from '../../repository' import { createLabel, diff --git a/packages/api/src/resolvers/types.ts b/packages/api/src/resolvers/types.ts index 17cf31258..759ff718a 100644 --- a/packages/api/src/resolvers/types.ts +++ b/packages/api/src/resolvers/types.ts @@ -4,7 +4,7 @@ import { Context as ApolloContext } from 'apollo-server-core' import * as jwt from 'jsonwebtoken' import { EntityManager } from 'typeorm' import winston from 'winston' -import { PubsubClient } from '../datalayer/pubsub' +import { PubsubClient } from '../pubsub' export interface Claims { uid: string diff --git a/packages/api/src/routers/article_router.ts b/packages/api/src/routers/article_router.ts index e368772a8..6e7d7f4bc 100644 --- a/packages/api/src/routers/article_router.ts +++ b/packages/api/src/routers/article_router.ts @@ -4,12 +4,12 @@ import { htmlToSpeechFile } from '@omnivore/text-to-speech-handler' import cors from 'cors' import express from 'express' import * as jwt from 'jsonwebtoken' -import { createPubSubClient } from '../datalayer/pubsub' import { getPageById, updatePage } from '../elastic/pages' -import { getRepository } from '../repository' import { Speech, SpeechState } from '../entity/speech' import { env } from '../env' import { CreateArticleErrorCode } from '../generated/graphql' +import { createPubSubClient } from '../pubsub' +import { getRepository } from '../repository' import { Claims } from '../resolvers/types' import { createPageSaveRequest } from '../services/create_page_save_request' import { getClaimsByToken } from '../utils/auth' diff --git a/packages/api/src/routers/auth/apple_auth.ts b/packages/api/src/routers/auth/apple_auth.ts index 73cbf56a0..cd75b3324 100644 --- a/packages/api/src/routers/auth/apple_auth.ts +++ b/packages/api/src/routers/auth/apple_auth.ts @@ -3,9 +3,9 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import * as jwt from 'jsonwebtoken' import jwksClient from 'jwks-rsa' -import UserModel from '../../datalayer/user' import { env, homePageURL } from '../../env' import { LoginErrorCode } from '../../generated/graphql' +import { userRepository } from '../../repository' import { logger } from '../../utils/logger' import { createSsoToken, ssoRedirectURL } from '../../utils/sso' import { DecodeTokenResult } from './auth_types' @@ -119,8 +119,7 @@ export async function handleAppleWebAuth( } try { - const model = new UserModel() - const user = await model.getWhere({ + const user = await userRepository.findOneBy({ sourceUserId: decodedTokenResult.sourceUserId, source: 'APPLE', }) diff --git a/packages/api/src/routers/auth/auth_router.ts b/packages/api/src/routers/auth/auth_router.ts index 250f57a47..9e3200ad0 100644 --- a/packages/api/src/routers/auth/auth_router.ts +++ b/packages/api/src/routers/auth/auth_router.ts @@ -15,17 +15,10 @@ import * as jwt from 'jsonwebtoken' import url from 'url' import { promisify } from 'util' import { AppDataSource } from '../../data-source' -import { kx } from '../../datalayer/knex_config' -import UserModel from '../../datalayer/user' -import { - RegistrationType, - StatusType, - UserData, -} from '../../datalayer/user/model' -import { User } from '../../entity/user' +import { RegistrationType, StatusType, User } from '../../entity/user' import { env } from '../../env' import { LoginErrorCode, SignupErrorCode } from '../../generated/graphql' -import { getRepository, setClaims } from '../../repository' +import { getRepository, setClaims, userRepository } from '../../repository' import { isErrorWithCode } from '../../resolvers' import { createUser, getUserByEmail } from '../../services/create_user' import { @@ -247,8 +240,7 @@ export function authRouter() { return { errorCodes: [SignupErrorCode.GoogleAuthError] } } - const model = new UserModel(kx) - const user = await model.getWhere({ email: userData.email }) + const user = await userRepository.findOneBy({ email: userData.email }) // eslint-disable-next @typescript-eslint/ban-ts-comment const secret = (await signToken( @@ -343,7 +335,7 @@ export function authRouter() { async function handleSuccessfulLogin( req: express.Request, res: express.Response, - user: UserData | User, + user: User, newUser: boolean ): Promise { try { diff --git a/packages/api/src/routers/auth/google_auth.ts b/packages/api/src/routers/auth/google_auth.ts index a7c148da7..ae500165b 100644 --- a/packages/api/src/routers/auth/google_auth.ts +++ b/packages/api/src/routers/auth/google_auth.ts @@ -1,9 +1,9 @@ import { google, oauth2_v2 as oauthV2 } from 'googleapis' import { OAuth2Client } from 'googleapis-common' import url from 'url' -import UserModel from '../../datalayer/user' import { env, homePageURL } from '../../env' import { LoginErrorCode } from '../../generated/graphql' +import { userRepository } from '../../repository' import { logger } from '../../utils/logger' import { createSsoToken, ssoRedirectURL } from '../../utils/sso' import { DecodeTokenResult } from './auth_types' @@ -127,8 +127,7 @@ export async function handleGoogleWebAuth( redirectURL: authFailedRedirect, }) } - const model = new UserModel() - const user = await model.getWhere({ + const user = await userRepository.findOneBy({ email, source: 'GOOGLE', }) diff --git a/packages/api/src/routers/auth/mobile/sign_in.ts b/packages/api/src/routers/auth/mobile/sign_in.ts index 93cf22ea8..1d0c8523a 100644 --- a/packages/api/src/routers/auth/mobile/sign_in.ts +++ b/packages/api/src/routers/auth/mobile/sign_in.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/restrict-template-expressions */ -import UserModel from '../../../datalayer/user' -import { StatusType } from '../../../datalayer/user/model' +import { StatusType } from '../../../entity/user' +import { userRepository } from '../../../repository' import { getUserByEmail } from '../../../services/create_user' import { sendConfirmationEmail } from '../../../services/send_emails' import { comparePassword } from '../../../utils/auth' @@ -97,8 +97,7 @@ async function createAuthResponsePayload( } try { - const model = new UserModel() - const user = await model.getWhere({ + const user = await userRepository.findOneBy({ email: decodedTokenResult.email, source: authProvider, }) diff --git a/packages/api/src/routers/auth/mobile/sign_up.ts b/packages/api/src/routers/auth/mobile/sign_up.ts index 3af00ec93..7431b7c00 100644 --- a/packages/api/src/routers/auth/mobile/sign_up.ts +++ b/packages/api/src/routers/auth/mobile/sign_up.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/restrict-template-expressions */ -import UserModel from '../../../datalayer/user' +import { userRepository } from '../../../repository' import { createUser } from '../../../services/create_user' import { hashPassword } from '../../../utils/auth' import { logger } from '../../../utils/logger' @@ -97,8 +97,7 @@ async function createSignUpResponsePayload( } // check if user exists - const userModel = new UserModel() - const existingUser = await userModel.getWhere({ email }) + const existingUser = await userRepository.findOneBy({ email }) if (existingUser) { return { diff --git a/packages/api/src/routers/local_debug_router.ts b/packages/api/src/routers/local_debug_router.ts index 031af949a..146e53931 100644 --- a/packages/api/src/routers/local_debug_router.ts +++ b/packages/api/src/routers/local_debug_router.ts @@ -1,11 +1,11 @@ +import cors from 'cors' import express, { Router } from 'express' import { env } from '../env' -import { createWebAuthToken } from './auth/jwt_helpers' -import UserModel from '../datalayer/user' import { LoginErrorCode } from '../generated/graphql' -import cors from 'cors' +import { userRepository } from '../repository' import { createUser } from '../services/create_user' import { corsConfig } from '../utils/corsConfig' +import { createWebAuthToken } from './auth/jwt_helpers' // For local development only export function localDebugRouter(): Router { @@ -20,8 +20,9 @@ export function localDebugRouter(): Router { try { let userId: string | undefined = undefined - const userModel = new UserModel() - const existingUser = await userModel.getWhere({ email: fakeEmail }) + const existingUser = await userRepository.findOneBy({ + email: fakeEmail, + }) userId = existingUser?.id if (!userId) { diff --git a/packages/api/src/routers/page_router.ts b/packages/api/src/routers/page_router.ts index d14429f11..bfc2309bd 100644 --- a/packages/api/src/routers/page_router.ts +++ b/packages/api/src/routers/page_router.ts @@ -5,17 +5,17 @@ import cors from 'cors' import express from 'express' import * as jwt from 'jsonwebtoken' -import { createPubSubClient } from '../datalayer/pubsub' import { createPage, getPageByParam, updatePage } from '../elastic/pages' import { addRecommendation } from '../elastic/recommendation' import { Recommendation } from '../elastic/types' -import { uploadFileRepository } from '../repository' import { env } from '../env' import { ArticleSavingRequestStatus, PageType, UploadFileStatus, } from '../generated/graphql' +import { createPubSubClient } from '../pubsub' +import { uploadFileRepository } from '../repository' import { Claims } from '../resolvers/types' import { getTokenByRequest } from '../utils/auth' import { corsConfig } from '../utils/corsConfig' diff --git a/packages/api/src/routers/svc/content.ts b/packages/api/src/routers/svc/content.ts index d649a86c6..1a992ccee 100644 --- a/packages/api/src/routers/svc/content.ts +++ b/packages/api/src/routers/svc/content.ts @@ -3,13 +3,10 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import express from 'express' import { AppDataSource } from '../../data-source' -import { - createPubSubClient, - readPushSubscription, -} from '../../datalayer/pubsub' import { getPageByParam, updatePage } from '../../elastic/pages' import { Page } from '../../elastic/types' import { ArticleSavingRequestStatus } from '../../generated/graphql' +import { createPubSubClient, readPushSubscription } from '../../pubsub' import { setClaims } from '../../repository' import { setFileUploadComplete } from '../../services/save_file' import { logger } from '../../utils/logger' diff --git a/packages/api/src/routers/svc/email_attachment.ts b/packages/api/src/routers/svc/email_attachment.ts index 972c0f623..a6245dc28 100644 --- a/packages/api/src/routers/svc/email_attachment.ts +++ b/packages/api/src/routers/svc/email_attachment.ts @@ -1,10 +1,10 @@ import express from 'express' import { AppDataSource } from '../../data-source' -import { createPubSubClient } from '../../datalayer/pubsub' import { createPage } from '../../elastic/pages' import { ArticleSavingRequestStatus, Page } from '../../elastic/types' import { env } from '../../env' import { PageType, UploadFileStatus } from '../../generated/graphql' +import { createPubSubClient } from '../../pubsub' import { setClaims, uploadFileRepository } from '../../repository' import { getNewsletterEmail } from '../../services/newsletters' import { updateReceivedEmail } from '../../services/received_emails' diff --git a/packages/api/src/routers/svc/emails.ts b/packages/api/src/routers/svc/emails.ts index 9ceb2c913..2bc1698f4 100644 --- a/packages/api/src/routers/svc/emails.ts +++ b/packages/api/src/routers/svc/emails.ts @@ -1,10 +1,7 @@ import cors from 'cors' import express from 'express' -import { - createPubSubClient, - readPushSubscription, -} from '../../datalayer/pubsub' import { env } from '../../env' +import { createPubSubClient, readPushSubscription } from '../../pubsub' import { getNewsletterEmail } from '../../services/newsletters' import { saveReceivedEmail, diff --git a/packages/api/src/routers/svc/integrations.ts b/packages/api/src/routers/svc/integrations.ts index c452a78ff..349792c9c 100644 --- a/packages/api/src/routers/svc/integrations.ts +++ b/packages/api/src/routers/svc/integrations.ts @@ -5,10 +5,10 @@ import { stringify } from 'csv-stringify' import express from 'express' import { DateTime } from 'luxon' import { v4 as uuidv4 } from 'uuid' -import { EntityType, readPushSubscription } from '../../datalayer/pubsub' import { getPageById, searchPages } from '../../elastic/pages' import { Page } from '../../elastic/types' import { Integration, IntegrationType } from '../../entity/integration' +import { EntityType, readPushSubscription } from '../../pubsub' import { getRepository } from '../../repository' import { Claims } from '../../resolvers/types' import { getIntegrationService } from '../../services/integrations' diff --git a/packages/api/src/routers/svc/links.ts b/packages/api/src/routers/svc/links.ts index a769b6428..76903986e 100644 --- a/packages/api/src/routers/svc/links.ts +++ b/packages/api/src/routers/svc/links.ts @@ -2,7 +2,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import express from 'express' -import { readPushSubscription } from '../../datalayer/pubsub' +import { readPushSubscription } from '../../pubsub' import { createPageSaveRequest } from '../../services/create_page_save_request' import { logger } from '../../utils/logger' diff --git a/packages/api/src/routers/svc/newsletters.ts b/packages/api/src/routers/svc/newsletters.ts index d39ea8280..2ae6397a3 100644 --- a/packages/api/src/routers/svc/newsletters.ts +++ b/packages/api/src/routers/svc/newsletters.ts @@ -1,9 +1,6 @@ import express from 'express' -import { - createPubSubClient, - readPushSubscription, -} from '../../datalayer/pubsub' import { SubscriptionStatus } from '../../generated/graphql' +import { createPubSubClient, readPushSubscription } from '../../pubsub' import { getNewsletterEmail, updateConfirmationCode, diff --git a/packages/api/src/routers/svc/reminders.ts b/packages/api/src/routers/svc/reminders.ts index 9bb416460..650c69e65 100644 --- a/packages/api/src/routers/svc/reminders.ts +++ b/packages/api/src/routers/svc/reminders.ts @@ -1,10 +1,10 @@ import { MulticastMessage } from 'firebase-admin/messaging' import { AppDataSource } from '../../data-source' -import { createPubSubClient } from '../../datalayer/pubsub' import { updatePage } from '../../elastic/pages' import { UserDeviceToken } from '../../entity/user_device_tokens' import { homePageURL } from '../../env' import { ContentReader } from '../../generated/graphql' +import { createPubSubClient } from '../../pubsub' import { setClaims } from '../../repository' import { PageReminder, setRemindersComplete } from '../../services/reminders' diff --git a/packages/api/src/routers/svc/rss_feed.ts b/packages/api/src/routers/svc/rss_feed.ts index 26f2344e9..dc8b4bc15 100644 --- a/packages/api/src/routers/svc/rss_feed.ts +++ b/packages/api/src/routers/svc/rss_feed.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-misused-promises */ import express from 'express' -import { readPushSubscription } from '../../datalayer/pubsub' import { Subscription } from '../../entity/subscription' import { SubscriptionStatus, SubscriptionType } from '../../generated/graphql' +import { readPushSubscription } from '../../pubsub' import { getRepository } from '../../repository' import { enqueueRssFeedFetch } from '../../utils/createTask' import { logger } from '../../utils/logger' diff --git a/packages/api/src/routers/svc/upload.ts b/packages/api/src/routers/svc/upload.ts index 9d3167832..d93e07fb3 100644 --- a/packages/api/src/routers/svc/upload.ts +++ b/packages/api/src/routers/svc/upload.ts @@ -4,8 +4,8 @@ import express from 'express' import { DateTime } from 'luxon' import { v4 as uuidv4 } from 'uuid' -import { readPushSubscription } from '../../datalayer/pubsub' import { env } from '../../env' +import { readPushSubscription } from '../../pubsub' import { logger } from '../../utils/logger' import { uploadToBucket } from '../../utils/uploads' diff --git a/packages/api/src/routers/svc/webhooks.ts b/packages/api/src/routers/svc/webhooks.ts index cbe65a18a..97d17590c 100644 --- a/packages/api/src/routers/svc/webhooks.ts +++ b/packages/api/src/routers/svc/webhooks.ts @@ -3,8 +3,8 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import axios, { Method } from 'axios' import express from 'express' -import { readPushSubscription } from '../../datalayer/pubsub' import { Webhook } from '../../entity/webhook' +import { readPushSubscription } from '../../pubsub' import { getRepository } from '../../repository' import { logger } from '../../utils/logger' diff --git a/packages/api/src/routers/text_to_speech.ts b/packages/api/src/routers/text_to_speech.ts index 655f2de33..b5e3ee84e 100644 --- a/packages/api/src/routers/text_to_speech.ts +++ b/packages/api/src/routers/text_to_speech.ts @@ -4,13 +4,13 @@ import { htmlToSpeechFile } from '@omnivore/text-to-speech-handler' import cors from 'cors' import express from 'express' -import { readPushSubscription } from '../datalayer/pubsub' +import { AppDataSource } from '../data-source' import { getPageById } from '../elastic/pages' import { ArticleSavingRequestStatus } from '../elastic/types' -import { getRepository, setClaims } from '../repository' import { Speech, SpeechState } from '../entity/speech' import { UserPersonalization } from '../entity/user_personalization' -import { AppDataSource } from '../data-source' +import { readPushSubscription } from '../pubsub' +import { getRepository, setClaims } from '../repository' import { FeatureName, getFeature } from '../services/features' import { shouldSynthesize } from '../services/speech' import { getClaimsByToken } from '../utils/auth' diff --git a/packages/api/src/services/create_page_save_request.ts b/packages/api/src/services/create_page_save_request.ts index 3e0425e6b..ffc29e1ff 100644 --- a/packages/api/src/services/create_page_save_request.ts +++ b/packages/api/src/services/create_page_save_request.ts @@ -1,6 +1,5 @@ import * as privateIpLib from 'private-ip' import { v4 as uuidv4 } from 'uuid' -import { createPubSubClient, PubsubClient } from '../datalayer/pubsub' import { countByCreatedAt, createPage, @@ -13,6 +12,7 @@ import { ArticleSavingRequest, CreateArticleSavingRequestErrorCode, } from '../generated/graphql' +import { createPubSubClient, PubsubClient } from '../pubsub' import { getRepository } from '../repository' import { enqueueParseRequest } from '../utils/createTask' import { diff --git a/packages/api/src/services/create_user.ts b/packages/api/src/services/create_user.ts index 650fc8672..15d1be07c 100644 --- a/packages/api/src/services/create_user.ts +++ b/packages/api/src/services/create_user.ts @@ -1,10 +1,9 @@ import { EntityManager, In } from 'typeorm' import { AppDataSource } from '../data-source' -import { StatusType } from '../datalayer/user/model' import { GroupMembership } from '../entity/groups/group_membership' import { Invite } from '../entity/groups/invite' import { Profile } from '../entity/profile' -import { User } from '../entity/user' +import { StatusType, User } from '../entity/user' import { SignupErrorCode } from '../generated/graphql' import { getRepository, userRepository } from '../repository' import { AuthProvider } from '../routers/auth/auth_types' diff --git a/packages/api/src/services/popular_reads.ts b/packages/api/src/services/popular_reads.ts index 89d067c1b..42b002d4b 100644 --- a/packages/api/src/services/popular_reads.ts +++ b/packages/api/src/services/popular_reads.ts @@ -1,10 +1,10 @@ import * as httpContext from 'express-http-context2' import { readFileSync } from 'fs' import path from 'path' -import { createPubSubClient } from '../datalayer/pubsub' import { createPage } from '../elastic/pages' import { ArticleSavingRequestStatus, Page, PageContext } from '../elastic/types' import { PageType } from '../generated/graphql' +import { createPubSubClient } from '../pubsub' import { generateSlug, stringToHash } from '../utils/helpers' import { logger } from '../utils/logger' diff --git a/packages/api/src/services/save_email.ts b/packages/api/src/services/save_email.ts index 375b8d9ed..525ecc3f9 100644 --- a/packages/api/src/services/save_email.ts +++ b/packages/api/src/services/save_email.ts @@ -1,6 +1,6 @@ -import { PubsubClient } from '../datalayer/pubsub' import { createPage, getPageByParam, updatePage } from '../elastic/pages' import { ArticleSavingRequestStatus, Page } from '../elastic/types' +import { PubsubClient } from '../pubsub' import { enqueueThumbnailTask } from '../utils/createTask' import { cleanUrl, diff --git a/packages/api/src/services/save_file.ts b/packages/api/src/services/save_file.ts index a6bbeecf4..068e3e349 100644 --- a/packages/api/src/services/save_file.ts +++ b/packages/api/src/services/save_file.ts @@ -1,7 +1,7 @@ import { AppDataSource } from '../data-source' -import { UserData } from '../datalayer/user/model' import { updatePage } from '../elastic/pages' import { UploadFile } from '../entity/upload_file' +import { User } from '../entity/user' import { homePageURL } from '../env' import { ArticleSavingRequestStatus, @@ -24,7 +24,7 @@ export const setFileUploadComplete = async ( export const saveFile = async ( ctx: WithDataSourcesContext, - user: UserData, + user: User, input: SaveFileInput ): Promise => { logger.info('saving file with input', input) diff --git a/packages/api/src/services/save_newsletter_email.ts b/packages/api/src/services/save_newsletter_email.ts index 6bb0e4f73..1bae6d5d2 100644 --- a/packages/api/src/services/save_newsletter_email.ts +++ b/packages/api/src/services/save_newsletter_email.ts @@ -1,11 +1,11 @@ import { MulticastMessage } from 'firebase-admin/messaging' -import { createPubSubClient } from '../datalayer/pubsub' import { updatePage } from '../elastic/pages' import { Page } from '../elastic/types' import { NewsletterEmail } from '../entity/newsletter_email' import { UserDeviceToken } from '../entity/user_device_tokens' import { env } from '../env' import { ContentReader } from '../generated/graphql' +import { createPubSubClient } from '../pubsub' import { analytics } from '../utils/analytics' import { isBase64Image } from '../utils/helpers' import { logger } from '../utils/logger' diff --git a/packages/api/src/services/save_url.ts b/packages/api/src/services/save_url.ts index 520514b76..82ebf7736 100644 --- a/packages/api/src/services/save_url.ts +++ b/packages/api/src/services/save_url.ts @@ -1,8 +1,8 @@ -import { PubsubClient } from '../datalayer/pubsub' import { ArticleSavingRequestStatus } from '../elastic/types' import { User } from '../entity/user' import { homePageURL } from '../env' import { SaveErrorCode, SaveResult, SaveUrlInput } from '../generated/graphql' +import { PubsubClient } from '../pubsub' import { getRepository } from '../repository' import { logger } from '../utils/logger' import { createPageSaveRequest } from './create_page_save_request' diff --git a/packages/api/test/elastic/highlights.test.ts b/packages/api/test/elastic/highlights.test.ts index cbc497df5..7c66407c0 100644 --- a/packages/api/test/elastic/highlights.test.ts +++ b/packages/api/test/elastic/highlights.test.ts @@ -6,7 +6,7 @@ import { Page, PageContext, } from '../../src/elastic/types' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { deletePage } from '../../src/elastic/pages' import { addHighlightToPage, diff --git a/packages/api/test/elastic/labels.test.ts b/packages/api/test/elastic/labels.test.ts index 3a1ce37b5..50ae8b952 100644 --- a/packages/api/test/elastic/labels.test.ts +++ b/packages/api/test/elastic/labels.test.ts @@ -9,7 +9,7 @@ import { PageContext, PageType, } from '../../src/elastic/types' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { createPage, deletePage, getPageById } from '../../src/elastic/pages' import { addLabelInPage, setLabelsForHighlight } from '../../src/elastic/labels' import { addHighlightToPage } from '../../src/elastic/highlights' diff --git a/packages/api/test/elastic/pages.test.ts b/packages/api/test/elastic/pages.test.ts index 3bc9e2ab0..be6db6591 100644 --- a/packages/api/test/elastic/pages.test.ts +++ b/packages/api/test/elastic/pages.test.ts @@ -7,7 +7,7 @@ import { PageContext, PageType, } from '../../src/elastic/types' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { countByCreatedAt, createPage, diff --git a/packages/api/test/global-teardown.ts b/packages/api/test/global-teardown.ts index 80ae6be4c..a10787d50 100644 --- a/packages/api/test/global-teardown.ts +++ b/packages/api/test/global-teardown.ts @@ -1,12 +1,10 @@ import { AppDataSource } from '../src/data-source' import { stopApolloServer } from './util' -import { kx } from '../src/datalayer/knex_config' export const mochaGlobalTeardown = async () => { - await AppDataSource.destroy() - await kx.destroy() - console.log('db connection closed') - await stopApolloServer() console.log('apollo server stopped') + + await AppDataSource.destroy() + console.log('db connection closed') } diff --git a/packages/api/test/resolvers/article.test.ts b/packages/api/test/resolvers/article.test.ts index 08b478a75..6b663f2a5 100644 --- a/packages/api/test/resolvers/article.test.ts +++ b/packages/api/test/resolvers/article.test.ts @@ -3,7 +3,6 @@ import { expect } from 'chai' import chaiString from 'chai-string' import 'mocha' import sinon from 'sinon' -import { createPubSubClient } from '../../src/datalayer/pubsub' import { refreshIndex } from '../../src/elastic' import { addHighlightToPage } from '../../src/elastic/highlights' import { @@ -30,6 +29,7 @@ import { UpdateReason, UploadFileStatus, } from '../../src/generated/graphql' +import { createPubSubClient } from '../../src/pubsub' import { getRepository } from '../../src/repository' import * as createTask from '../../src/utils/createTask' import * as uploads from '../../src/utils/uploads' diff --git a/packages/api/test/resolvers/article_saving_request.test.ts b/packages/api/test/resolvers/article_saving_request.test.ts index 2d38bf026..657f9b961 100644 --- a/packages/api/test/resolvers/article_saving_request.test.ts +++ b/packages/api/test/resolvers/article_saving_request.test.ts @@ -1,7 +1,7 @@ import { expect } from 'chai' import 'mocha' import sinon from 'sinon' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { deletePagesByParam, getPageByParam } from '../../src/elastic/pages' import { ArticleSavingRequestStatus, diff --git a/packages/api/test/resolvers/highlight.test.ts b/packages/api/test/resolvers/highlight.test.ts index d4b2a9537..0eefc4952 100644 --- a/packages/api/test/resolvers/highlight.test.ts +++ b/packages/api/test/resolvers/highlight.test.ts @@ -10,7 +10,7 @@ import { expect } from 'chai' import 'mocha' import { User } from '../../src/entity/user' import chaiString from 'chai-string' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { HighlightType, PageContext } from '../../src/elastic/types' import { deletePage, updatePage } from '../../src/elastic/pages' diff --git a/packages/api/test/resolvers/labels.test.ts b/packages/api/test/resolvers/labels.test.ts index 0d43de0b4..74b350805 100644 --- a/packages/api/test/resolvers/labels.test.ts +++ b/packages/api/test/resolvers/labels.test.ts @@ -1,6 +1,6 @@ import { expect } from 'chai' import 'mocha' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { refreshIndex } from '../../src/elastic' import { addHighlightToPage, diff --git a/packages/api/test/resolvers/recent_searches.test.ts b/packages/api/test/resolvers/recent_searches.test.ts index 93358c4b2..ff46df46c 100644 --- a/packages/api/test/resolvers/recent_searches.test.ts +++ b/packages/api/test/resolvers/recent_searches.test.ts @@ -1,6 +1,6 @@ import { expect } from 'chai' import 'mocha' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { PageContext } from '../../src/elastic/types' import { SearchHistory } from '../../src/entity/search_history' import { User } from '../../src/entity/user' diff --git a/packages/api/test/resolvers/upload_file_request.test.ts b/packages/api/test/resolvers/upload_file_request.test.ts index 50f57956c..98119ac94 100644 --- a/packages/api/test/resolvers/upload_file_request.test.ts +++ b/packages/api/test/resolvers/upload_file_request.test.ts @@ -6,7 +6,7 @@ import 'mocha' import { User } from '../../src/entity/user' import chaiString from 'chai-string' import { PageContext } from '../../src/elastic/types' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { deletePage, getPageById } from '../../src/elastic/pages' chai.use(chaiString) diff --git a/packages/api/test/routers/auth.test.ts b/packages/api/test/routers/auth.test.ts index 51c9fefd5..4a17d58ba 100644 --- a/packages/api/test/routers/auth.test.ts +++ b/packages/api/test/routers/auth.test.ts @@ -3,9 +3,8 @@ import chai, { expect } from 'chai' import sinon from 'sinon' import sinonChai from 'sinon-chai' import supertest from 'supertest' -import { StatusType } from '../../src/datalayer/user/model' import { searchPages } from '../../src/elastic/pages' -import { User } from '../../src/entity/user' +import { StatusType, User } from '../../src/entity/user' import { getRepository } from '../../src/repository' import { AuthProvider } from '../../src/routers/auth/auth_types' import { createPendingUserToken } from '../../src/routers/auth/jwt_helpers' diff --git a/packages/api/test/routers/integrations.test.ts b/packages/api/test/routers/integrations.test.ts index 16834d329..1b841d0e2 100644 --- a/packages/api/test/routers/integrations.test.ts +++ b/packages/api/test/routers/integrations.test.ts @@ -7,7 +7,7 @@ import sinon from 'sinon' import { createPubSubClient, PubSubRequestBody, -} from '../../src/datalayer/pubsub' +} from '../../src/pubsub' import { addHighlightToPage } from '../../src/elastic/highlights' import { deletePage } from '../../src/elastic/pages' import { diff --git a/packages/api/test/services/save_email.test.ts b/packages/api/test/services/save_email.test.ts index e58425d80..353baab98 100644 --- a/packages/api/test/services/save_email.test.ts +++ b/packages/api/test/services/save_email.test.ts @@ -2,7 +2,7 @@ import 'mocha' import { expect } from 'chai' import { createTestUser, deleteTestUser } from '../db' import { SaveContext, saveEmail } from '../../src/services/save_email' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { getPageByParam } from '../../src/elastic/pages' import nock from 'nock' import { User } from '../../src/entity/user' diff --git a/packages/api/test/services/save_newsletter_email.test.ts b/packages/api/test/services/save_newsletter_email.test.ts index 91fe7170c..8a290aa4c 100644 --- a/packages/api/test/services/save_newsletter_email.test.ts +++ b/packages/api/test/services/save_newsletter_email.test.ts @@ -1,7 +1,7 @@ import { expect } from 'chai' import 'mocha' import nock from 'nock' -import { createPubSubClient } from '../../src/datalayer/pubsub' +import { createPubSubClient } from '../../src/pubsub' import { getPageByParam } from '../../src/elastic/pages' import { NewsletterEmail } from '../../src/entity/newsletter_email' import { ReceivedEmail } from '../../src/entity/received_email' diff --git a/packages/api/test/util.ts b/packages/api/test/util.ts index 0b200506b..0fec43c71 100644 --- a/packages/api/test/util.ts +++ b/packages/api/test/util.ts @@ -1,11 +1,11 @@ -import { createApp } from '../src/server' import supertest from 'supertest' import { v4 } from 'uuid' -import { corsConfig } from '../src/utils/corsConfig' +import { createPage } from '../src/elastic/pages' import { ArticleSavingRequestStatus, Label, Page } from '../src/elastic/types' import { PageType } from '../src/generated/graphql' -import { createPubSubClient } from '../src/datalayer/pubsub' -import { createPage } from '../src/elastic/pages' +import { createPubSubClient } from '../src/pubsub' +import { createApp } from '../src/server' +import { corsConfig } from '../src/utils/corsConfig' const { app, apollo } = createApp() export const request = supertest(app)