diff --git a/backend/Dockerfile b/backend/Dockerfile index cbb426e..5dabb70 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,9 +1,10 @@ # Stage 1: Build FROM eclipse-temurin:21-jdk-alpine AS build WORKDIR /app -COPY build.gradle settings.gradle gradlew ./ +COPY backend/build.gradle ./ +COPY gradlew ./ COPY gradle gradle -COPY src src +COPY backend/src src RUN chmod +x gradlew RUN ./gradlew bootJar --no-daemon diff --git a/backend/src/main/resources/db/migration/V1__init.sql b/backend/src/main/resources/db/migration/V1__init.sql index 5c90e15..6ddc45a 100644 --- a/backend/src/main/resources/db/migration/V1__init.sql +++ b/backend/src/main/resources/db/migration/V1__init.sql @@ -2,8 +2,11 @@ CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, - password_hash VARCHAR(255) NOT NULL, + password VARCHAR(255) NOT NULL, display_name VARCHAR(255) NOT NULL, + quota_bytes BIGINT NOT NULL DEFAULT 1073741824, + used_bytes BIGINT NOT NULL DEFAULT 0, + is_active BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -12,7 +15,8 @@ CREATE TABLE folders ( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, name VARCHAR(50) NOT NULL, - type VARCHAR(20) NOT NULL, + message_count INTEGER NOT NULL DEFAULT 0, + unread_count INTEGER NOT NULL DEFAULT 0, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -25,10 +29,13 @@ CREATE TABLE messages ( recipient_email VARCHAR(255) NOT NULL, subject VARCHAR(1000), body TEXT, + is_html BOOLEAN NOT NULL DEFAULT FALSE, is_read BOOLEAN NOT NULL DEFAULT FALSE, + is_flagged BOOLEAN NOT NULL DEFAULT FALSE, is_spam BOOLEAN NOT NULL DEFAULT FALSE, message_size BIGINT, - received_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + received_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + message_id VARCHAR(255) ); -- Таблица вложений @@ -58,6 +65,8 @@ CREATE TABLE contacts ( user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, + phone VARCHAR(50), + company VARCHAR(255), created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE (user_id, email) ); diff --git a/docker-compose.yml b/docker-compose.yml index 14dc1a0..c815e94 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,18 +2,23 @@ version: '3.8' services: mail-server: - build: ./backend + build: + context: . + dockerfile: ./backend/Dockerfile ports: - "8080:8080" # REST API - - "3025:3025" # SMTP (приём писем) - - "143:143" # IMAP (доступ к письмам) + - "3026:3025" # SMTP (приём писем) + - "1443:143" # IMAP (доступ к письмам) volumes: - attachments:/app/attachments - dkim-keys:/app/dkim-keys environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/mailserver - - SPRING_DATASOURCE_USERNAME=mail - - SPRING_DATASOURCE_PASSWORD=secret + - SPRING_R2DBC_URL=r2dbc:postgresql://db:5432/mailserver + - SPRING_R2DBC_USERNAME=mail + - SPRING_R2DBC_PASSWORD=secret + - SPRING_FLYWAY_URL=jdbc:postgresql://db:5432/mailserver + - SPRING_FLYWAY_USER=mail + - SPRING_FLYWAY_PASSWORD=secret - SPRING_MAIL_HOST=mailpit - SPRING_MAIL_PORT=1025 depends_on: @@ -29,7 +34,7 @@ services: volumes: - pg-data:/var/lib/postgresql/data ports: - - "5432:5432" + - "5433:5432" mailpit: image: axllent/mailpit diff --git a/frontend/src/app/components/compose/compose.component.ts b/frontend/src/app/components/compose/compose.component.ts index 2bc00d9..70f8b1c 100644 --- a/frontend/src/app/components/compose/compose.component.ts +++ b/frontend/src/app/components/compose/compose.component.ts @@ -12,7 +12,7 @@ import { Router, ActivatedRoute } from '@angular/router'; template: `
💡 Supports Markdown: **bold**, *italic*, - lists, \`\`\`code\`\`\`
+Supports Markdown: **bold**, *italic*, - lists, code
}Attachments are available via the API @@ -58,24 +58,24 @@ import { Message } from '../../models/mail.models';