From 33efa9c29c3a289ce41d832451e302c52dccd0a6 Mon Sep 17 00:00:00 2001 From: ML-47 Date: Fri, 29 May 2026 18:10:18 +0200 Subject: [PATCH 1/3] added database containers and schema --- compose.yaml | 106 +++++++++++++++++++++++++++++++++-- docker/gen-ai-db/Dockerfile | 2 + docker/grocery-db/Dockerfile | 3 + docker/grocery-db/init.sql | 77 +++++++++++++++++++++++++ docker/user-db/Dockerfile | 3 + docker/user-db/init.sql | 10 ++++ 6 files changed, 197 insertions(+), 4 deletions(-) create mode 100644 docker/gen-ai-db/Dockerfile create mode 100644 docker/grocery-db/Dockerfile create mode 100644 docker/grocery-db/init.sql create mode 100644 docker/user-db/Dockerfile create mode 100644 docker/user-db/init.sql diff --git a/compose.yaml b/compose.yaml index d1d45c1..42d4574 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,4 +1,52 @@ services: + user-db: + build: + context: ./docker/user-db + container_name: bytebite-user-db + environment: + POSTGRES_DB: ${USER_DB_NAME:-bytebite_user} + POSTGRES_USER: ${USER_DB_USER:-bytebite_user} + POSTGRES_PASSWORD: ${USER_DB_PASSWORD:-bytebite_user_password} + volumes: + - user-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + + grocery-db: + build: + context: ./docker/grocery-db + container_name: bytebite-grocery-db + environment: + POSTGRES_DB: ${GROCERY_DB_NAME:-bytebite_grocery} + POSTGRES_USER: ${GROCERY_DB_USER:-bytebite_grocery} + POSTGRES_PASSWORD: ${GROCERY_DB_PASSWORD:-bytebite_grocery_password} + volumes: + - grocery-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + + gen-ai-db: + build: + context: ./docker/gen-ai-db + container_name: bytebite-gen-ai-db + environment: + POSTGRES_DB: ${GENAI_DB_NAME:-bytebite_gen_ai} + POSTGRES_USER: ${GENAI_DB_USER:-bytebite_gen_ai} + POSTGRES_PASSWORD: ${GENAI_DB_PASSWORD:-bytebite_gen_ai_password} + volumes: + - gen-ai-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + gen-ai: build: context: ./gen-ai @@ -7,17 +55,62 @@ services: - "8000:8000" environment: OPENAI_API_KEY: ${OPENAI_API_KEY} + DATABASE_URL: postgresql://${GENAI_DB_USER:-bytebite_gen_ai}:${GENAI_DB_PASSWORD:-bytebite_gen_ai_password}@gen-ai-db:5432/${GENAI_DB_NAME:-bytebite_gen_ai} + depends_on: + gen-ai-db: + condition: service_healthy + + user-service: + build: + context: ./server + container_name: bytebite-user-service + expose: + - "8080" + environment: + SPRING_APPLICATION_NAME: user-service + SPRING_DATASOURCE_URL: jdbc:postgresql://user-db:5432/${USER_DB_NAME:-bytebite_user} + SPRING_DATASOURCE_USERNAME: ${USER_DB_USER:-bytebite_user} + SPRING_DATASOURCE_PASSWORD: ${USER_DB_PASSWORD:-bytebite_user_password} + depends_on: + user-db: + condition: service_healthy - server: + grocery-service: build: context: ./server - container_name: bytebite-server + container_name: bytebite-grocery-service + expose: + - "8080" + environment: + SPRING_APPLICATION_NAME: grocery-service + GENAI_BASE_URL: http://gen-ai:8000 + SPRING_DATASOURCE_URL: jdbc:postgresql://grocery-db:5432/${GROCERY_DB_NAME:-bytebite_grocery} + SPRING_DATASOURCE_USERNAME: ${GROCERY_DB_USER:-bytebite_grocery} + SPRING_DATASOURCE_PASSWORD: ${GROCERY_DB_PASSWORD:-bytebite_grocery_password} + depends_on: + grocery-db: + condition: service_healthy + gen-ai: + condition: service_started + + api-gateway: + build: + context: ./server + container_name: bytebite-api-gateway ports: - "8080:8080" environment: + SPRING_APPLICATION_NAME: api-gateway + USER_SERVICE_BASE_URL: http://user-service:8080 + GROCERY_SERVICE_BASE_URL: http://grocery-service:8080 GENAI_BASE_URL: http://gen-ai:8000 depends_on: - - gen-ai + user-service: + condition: service_started + grocery-service: + condition: service_started + gen-ai: + condition: service_started client: build: @@ -26,4 +119,9 @@ services: ports: - "8081:80" depends_on: - - server \ No newline at end of file + - api-gateway + +volumes: + user-db-data: + grocery-db-data: + gen-ai-db-data: diff --git a/docker/gen-ai-db/Dockerfile b/docker/gen-ai-db/Dockerfile new file mode 100644 index 0000000..ab31989 --- /dev/null +++ b/docker/gen-ai-db/Dockerfile @@ -0,0 +1,2 @@ +FROM postgres:16-alpine + diff --git a/docker/grocery-db/Dockerfile b/docker/grocery-db/Dockerfile new file mode 100644 index 0000000..f0f7827 --- /dev/null +++ b/docker/grocery-db/Dockerfile @@ -0,0 +1,3 @@ +FROM postgres:16-alpine + +COPY init.sql /docker-entrypoint-initdb.d/01-init.sql diff --git a/docker/grocery-db/init.sql b/docker/grocery-db/init.sql new file mode 100644 index 0000000..9316198 --- /dev/null +++ b/docker/grocery-db/init.sql @@ -0,0 +1,77 @@ +CREATE EXTENSION IF NOT EXISTS pgcrypto; + +CREATE TYPE grocery_category AS ENUM ( + 'PRODUCE', + 'DAIRY', + 'MEAT', + 'SEAFOOD', + 'BAKERY', + 'PANTRY', + 'FROZEN', + 'BEVERAGES', + 'SPICES', + 'OTHER' +); + +CREATE TABLE IF NOT EXISTS recipes ( + recipe_id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name VARCHAR(255) NOT NULL, + user_id UUID NOT NULL +); + +CREATE TABLE IF NOT EXISTS grocery_lists ( + grocery_list_id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name VARCHAR(255) NOT NULL, + outdated BOOLEAN NOT NULL DEFAULT FALSE, + user_id UUID NOT NULL +); + +CREATE TABLE IF NOT EXISTS grocery_list_recipes ( + grocery_list_id UUID NOT NULL, + recipe_id UUID NOT NULL, + PRIMARY KEY (grocery_list_id, recipe_id), + CONSTRAINT fk_grocery_list_recipes_grocery_list + FOREIGN KEY (grocery_list_id) + REFERENCES grocery_lists (grocery_list_id) + ON DELETE CASCADE, + CONSTRAINT fk_grocery_list_recipes_recipe + FOREIGN KEY (recipe_id) + REFERENCES recipes (recipe_id) + ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS grocery_items ( + item_id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name VARCHAR(255) NOT NULL, + quantity DOUBLE PRECISION NOT NULL, + unit VARCHAR(50) NOT NULL, + category grocery_category NOT NULL DEFAULT 'OTHER', + is_purchased BOOLEAN NOT NULL DEFAULT FALSE, + recipe_id UUID, + grocery_list_id UUID, + CONSTRAINT fk_grocery_items_recipe + FOREIGN KEY (recipe_id) + REFERENCES recipes (recipe_id) + ON DELETE CASCADE, + CONSTRAINT fk_grocery_items_grocery_list + FOREIGN KEY (grocery_list_id) + REFERENCES grocery_lists (grocery_list_id) + ON DELETE CASCADE, + CONSTRAINT chk_grocery_items_owner + CHECK (recipe_id IS NOT NULL OR grocery_list_id IS NOT NULL) +); + +CREATE INDEX IF NOT EXISTS idx_recipes_user_id + ON recipes (user_id); + +CREATE INDEX IF NOT EXISTS idx_grocery_lists_user_id + ON grocery_lists (user_id); + +CREATE INDEX IF NOT EXISTS idx_grocery_list_recipes_recipe_id + ON grocery_list_recipes (recipe_id); + +CREATE INDEX IF NOT EXISTS idx_grocery_items_recipe_id + ON grocery_items (recipe_id); + +CREATE INDEX IF NOT EXISTS idx_grocery_items_grocery_list_id + ON grocery_items (grocery_list_id); diff --git a/docker/user-db/Dockerfile b/docker/user-db/Dockerfile new file mode 100644 index 0000000..f0f7827 --- /dev/null +++ b/docker/user-db/Dockerfile @@ -0,0 +1,3 @@ +FROM postgres:16-alpine + +COPY init.sql /docker-entrypoint-initdb.d/01-init.sql diff --git a/docker/user-db/init.sql b/docker/user-db/init.sql new file mode 100644 index 0000000..201fe84 --- /dev/null +++ b/docker/user-db/init.sql @@ -0,0 +1,10 @@ +CREATE EXTENSION IF NOT EXISTS pgcrypto; + +CREATE TABLE IF NOT EXISTS users ( + user_id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name VARCHAR(255) NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE, + password_hash VARCHAR(255) NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP +); + From a9f6b5a725b025a850ed6cf3ff2aeb53917dec66 Mon Sep 17 00:00:00 2001 From: ML-47 Date: Fri, 29 May 2026 18:15:14 +0200 Subject: [PATCH 2/3] added schema diagram --- documentation/database/DBSchemaDiagram.drawio | 139 ++++++++++++++++++ documentation/database/SchemaDiagram.jpg | Bin 0 -> 115975 bytes 2 files changed, 139 insertions(+) create mode 100644 documentation/database/DBSchemaDiagram.drawio create mode 100644 documentation/database/SchemaDiagram.jpg diff --git a/documentation/database/DBSchemaDiagram.drawio b/documentation/database/DBSchemaDiagram.drawio new file mode 100644 index 0000000..a478b80 --- /dev/null +++ b/documentation/database/DBSchemaDiagram.drawio @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/database/SchemaDiagram.jpg b/documentation/database/SchemaDiagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..168e529ab67a841b5cb00de1e2e913fe8eef3714 GIT binary patch literal 115975 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 Ms1?JIfBkLXckb@6VgLXD literal 0 HcmV?d00001 From 0182b0cc9fa2f30fa84a50cf7dc46945ab81637f Mon Sep 17 00:00:00 2001 From: ML-47 Date: Sat, 30 May 2026 18:49:29 +0200 Subject: [PATCH 3/3] removed gen-ai db --- compose.yaml | 21 --------------------- docker/gen-ai-db/Dockerfile | 2 -- 2 files changed, 23 deletions(-) delete mode 100644 docker/gen-ai-db/Dockerfile diff --git a/compose.yaml b/compose.yaml index 42d4574..2865d76 100644 --- a/compose.yaml +++ b/compose.yaml @@ -31,22 +31,6 @@ services: timeout: 5s retries: 5 - gen-ai-db: - build: - context: ./docker/gen-ai-db - container_name: bytebite-gen-ai-db - environment: - POSTGRES_DB: ${GENAI_DB_NAME:-bytebite_gen_ai} - POSTGRES_USER: ${GENAI_DB_USER:-bytebite_gen_ai} - POSTGRES_PASSWORD: ${GENAI_DB_PASSWORD:-bytebite_gen_ai_password} - volumes: - - gen-ai-db-data:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] - interval: 10s - timeout: 5s - retries: 5 - gen-ai: build: context: ./gen-ai @@ -55,10 +39,6 @@ services: - "8000:8000" environment: OPENAI_API_KEY: ${OPENAI_API_KEY} - DATABASE_URL: postgresql://${GENAI_DB_USER:-bytebite_gen_ai}:${GENAI_DB_PASSWORD:-bytebite_gen_ai_password}@gen-ai-db:5432/${GENAI_DB_NAME:-bytebite_gen_ai} - depends_on: - gen-ai-db: - condition: service_healthy user-service: build: @@ -124,4 +104,3 @@ services: volumes: user-db-data: grocery-db-data: - gen-ai-db-data: diff --git a/docker/gen-ai-db/Dockerfile b/docker/gen-ai-db/Dockerfile deleted file mode 100644 index ab31989..0000000 --- a/docker/gen-ai-db/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM postgres:16-alpine -