From 612151c151293c6ebe6a84e0a22140347cc3ffb7 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 30 Aug 2023 17:29:47 +0800 Subject: [PATCH] remove elastic from docker-compose --- docker-compose-test.yml | 23 ---- docker-compose.yml | 27 ----- packages/api/.env.example | 3 +- packages/api/.env.test | 2 - packages/api/src/apollo.ts | 8 +- .../src/{data-source.ts => data_source.ts} | 2 +- packages/api/src/entity/api_key.ts | 2 + .../api/src/events/highlight_subscriber.ts | 2 +- .../api/src/events/library_item_subscriber.ts | 3 +- packages/api/src/repository/index.ts | 12 +- packages/api/src/repository/library_item.ts | 11 ++ packages/api/src/repository/user.ts | 37 ++++++ packages/api/src/resolvers/api_key/index.ts | 107 +++++++----------- packages/api/src/resolvers/article/index.ts | 54 +++------ packages/api/src/resolvers/filters/index.ts | 3 +- packages/api/src/resolvers/labels/index.ts | 10 +- .../api/src/resolvers/popular_reads/index.ts | 11 -- .../src/resolvers/recent_searches/index.ts | 10 -- .../send_install_instructions/index.ts | 4 +- .../api/src/resolvers/subscriptions/index.ts | 4 +- packages/api/src/resolvers/user/index.ts | 4 +- .../resolvers/user_personalization/index.ts | 4 +- packages/api/src/routers/auth/auth_router.ts | 6 +- packages/api/src/routers/svc/content.ts | 4 +- .../api/src/routers/svc/email_attachment.ts | 4 +- packages/api/src/routers/svc/reminders.ts | 4 +- packages/api/src/routers/text_to_speech.ts | 4 +- packages/api/src/server.ts | 7 +- packages/api/src/services/archive_link.ts | 4 +- packages/api/src/services/create_user.ts | 33 +----- packages/api/src/services/features.ts | 4 +- packages/api/src/services/groups.ts | 8 +- packages/api/src/services/labels.ts | 6 +- packages/api/src/services/save_file.ts | 5 +- .../api/src/services/user_device_tokens.ts | 4 +- packages/api/test/db.ts | 18 +-- packages/api/test/global-setup.ts | 4 - packages/db/Dockerfile | 1 - packages/db/migrate.ts | 60 +--------- 39 files changed, 177 insertions(+), 342 deletions(-) rename packages/api/src/{data-source.ts => data_source.ts} (93%) create mode 100644 packages/api/src/repository/library_item.ts create mode 100644 packages/api/src/repository/user.ts diff --git a/docker-compose-test.yml b/docker-compose-test.yml index 11500a2eb..c68da942d 100644 --- a/docker-compose-test.yml +++ b/docker-compose-test.yml @@ -16,26 +16,6 @@ services: expose: - 5432 - elastic-test: - image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1 - container_name: "omnivore-elastic-test" - healthcheck: - test: curl 0.0.0.0:9201/_cat/health >/dev/null || exit 1 - interval: 2s - timeout: 2s - retries: 5 - environment: - - discovery.type=single-node - - http.cors.allow-origin=* - - http.cors.enabled=true - - http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization - - http.cors.allow-credentials=true - - http.port=9201 - volumes: - - ./.docker/elastic-test-data:/usr/share/elasticsearch/data - ports: - - "9201:9201" - api-test: build: context: . @@ -49,7 +29,6 @@ services: - PG_DB=omnivore_test - PG_PORT=5432 - PG_POOL_MAX=20 - - ELASTIC_URL=http://elastic-test:9201 - IMAGE_PROXY_URL=http://localhost:9999 - IMAGE_PROXY_SECRET=some-secret - JWT_SECRET=some_secret @@ -69,5 +48,3 @@ services: depends_on: postgres-test: condition: service_healthy - elastic-test: - condition: service_healthy diff --git a/docker-compose.yml b/docker-compose.yml index 98c3b92f5..a4f8bcda6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,33 +28,9 @@ services: - PG_USER=postgres - PG_PASSWORD=postgres - PG_DB=omnivore - - ELASTIC_URL=http://elastic:9200 - - ELASTIC_USERNAME=blank - - ELASTIC_PASSWORD=blank depends_on: postgres: condition: service_healthy - elastic: - condition: service_healthy - - elastic: - image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1 - container_name: "omnivore-elastic" - healthcheck: - test: curl 0.0.0.0:9200/_cat/health >/dev/null || exit 1 - interval: 2s - timeout: 2s - retries: 5 - environment: - - discovery.type=single-node - - http.cors.allow-origin=* - - http.cors.enabled=true - - http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization - - http.cors.allow-credentials=true - volumes: - - ./.docker/elastic-data:/usr/share/elasticsearch/data - ports: - - "9200:9200" api: build: @@ -75,7 +51,6 @@ services: - PG_DB=omnivore - PG_PORT=5432 - PG_POOL_MAX=20 - - ELASTIC_URL=http://elastic:9200 - JAEGER_HOST=jaeger - IMAGE_PROXY_SECRET=some-secret - JWT_SECRET=some_secret @@ -86,8 +61,6 @@ services: depends_on: migrate: condition: service_completed_successfully - elastic: - condition: service_healthy web: build: diff --git a/packages/api/.env.example b/packages/api/.env.example index 78aa2387a..899b04dc3 100644 --- a/packages/api/.env.example +++ b/packages/api/.env.example @@ -24,8 +24,7 @@ GCS_UPLOAD_BUCKET= GCS_UPLOAD_SA_KEY_FILE_PATH= TWITTER_BEARER_TOKEN= PREVIEW_IMAGE_WRAPPER_ID='selected_highlight_wrapper' -REMINDER_TASK_HANDLER_URL= -ELASTIC_URL=http://localhost:9200 SENDER_MESSAGE=msgs@sender.domain SENDER_FEEDBACK=feedback@sender.domain SENDER_GENERAL=no-reply@sender.domain +CONTENT_FETCH_URL=http://localhost:9090/ diff --git a/packages/api/.env.test b/packages/api/.env.test index bfdce2355..9b34455c1 100644 --- a/packages/api/.env.test +++ b/packages/api/.env.test @@ -26,7 +26,5 @@ GCS_UPLOAD_PRIVATE_BUCKET= TWITTER_BEARER_TOKEN= PREVIEW_IMAGE_WRAPPER_ID='selected_highlight_wrapper' SEGMENT_WRITE_KEY='test' -REMINDER_TASK_HANDLER_URL=http://localhost:4000/svc/reminders/trigger PUBSUB_VERIFICATION_TOKEN='123456' CONTENT_FETCH_URL=http://localhost:9090/ -ELASTIC_URL=http://localhost:9200 diff --git a/packages/api/src/apollo.ts b/packages/api/src/apollo.ts index fc8923d72..f5b9f45d2 100644 --- a/packages/api/src/apollo.ts +++ b/packages/api/src/apollo.ts @@ -12,10 +12,10 @@ import { ExpressContext } from 'apollo-server-express/dist/ApolloServer' import * as jwt from 'jsonwebtoken' import { EntityManager } from 'typeorm' import { promisify } from 'util' -import { AppDataSource } from './data-source' import { sanitizeDirectiveTransformer } from './directives' import { env } from './env' import { createPubSubClient } from './pubsub' +import { entityManager } from './repository' import { functionResolvers } from './resolvers/function_resolvers' import { ClaimsToSet, ResolverContext } from './resolvers/types' import ScalarResolvers from './scalars' @@ -76,9 +76,9 @@ const contextFunc: ContextFunction = async ({ cb: (em: EntityManager) => TResult, userRole?: string ): Promise => - AppDataSource.transaction(async (em) => { - await setClaims(em, undefined, userRole) - return cb(em) + entityManager.transaction(async (tx) => { + await setClaims(tx, undefined, userRole) + return cb(tx) }), tracingSpan: tracer.startSpan('apollo.request'), } diff --git a/packages/api/src/data-source.ts b/packages/api/src/data_source.ts similarity index 93% rename from packages/api/src/data-source.ts rename to packages/api/src/data_source.ts index c944ff5a8..c446d962f 100644 --- a/packages/api/src/data-source.ts +++ b/packages/api/src/data_source.ts @@ -3,7 +3,7 @@ import { SnakeNamingStrategy } from 'typeorm-naming-strategies' import { env } from './env' import { CustomTypeOrmLogger } from './utils/logger' -export const AppDataSource = new DataSource({ +export const appDataSource = new DataSource({ type: 'postgres', host: env.pg.host, port: env.pg.port, diff --git a/packages/api/src/entity/api_key.ts b/packages/api/src/entity/api_key.ts index f95335bdd..9bf8bb782 100644 --- a/packages/api/src/entity/api_key.ts +++ b/packages/api/src/entity/api_key.ts @@ -5,10 +5,12 @@ import { JoinColumn, ManyToOne, PrimaryGeneratedColumn, + Unique, } from 'typeorm' import { User } from './user' @Entity() +@Unique('user_id_name', ['user', 'name']) export class ApiKey { @PrimaryGeneratedColumn('uuid') id!: string diff --git a/packages/api/src/events/highlight_subscriber.ts b/packages/api/src/events/highlight_subscriber.ts index 5da980eda..f5725bd3b 100644 --- a/packages/api/src/events/highlight_subscriber.ts +++ b/packages/api/src/events/highlight_subscriber.ts @@ -80,7 +80,7 @@ export class HighlightSubscriber await this.pubsubClient.entityCreated