diff --git a/Dockerfiles/Dockerfile_etl b/Dockerfiles/Dockerfile_etl index c721b51..ddb0bb3 100644 --- a/Dockerfiles/Dockerfile_etl +++ b/Dockerfiles/Dockerfile_etl @@ -2,11 +2,11 @@ FROM python:3.12-slim WORKDIR /app/modules/anime_etl -# RUN apt-get update && apt-get install -y --no-install-recommends \ -# build-essential \ -# libpq-dev \ -# ca-certificates \ -# && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + libpq-dev \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* COPY modules/anime_etl/pyproject.toml modules/anime_etl/uv.lock ./ diff --git a/modules/frontend/nginx-default.conf b/modules/frontend/nginx-default.conf index 6075999..c3a851f 100644 --- a/modules/frontend/nginx-default.conf +++ b/modules/frontend/nginx-default.conf @@ -28,16 +28,6 @@ server { proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } - - location /media/ { - rewrite ^/media/(.*)$ /$1 break; - proxy_pass http://nyanimedb-images:8000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_set_header Host $host; - proxy_cache_bypass $http_upgrade; - } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; diff --git a/modules/frontend/src/api/sdk.gen.ts b/modules/frontend/src/api/sdk.gen.ts index 24153db..7d46120 100644 --- a/modules/frontend/src/api/sdk.gen.ts +++ b/modules/frontend/src/api/sdk.gen.ts @@ -2,7 +2,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import type { AddUserTitleData, AddUserTitleErrors, AddUserTitleResponses, DeleteUserTitleData, DeleteUserTitleErrors, DeleteUserTitleResponses, GetTitleData, GetTitleErrors, GetTitleResponses, GetTitlesData, GetTitlesErrors, GetTitlesResponses, GetUsersData, GetUsersErrors, GetUsersIdData, GetUsersIdErrors, GetUsersIdResponses, GetUsersResponses, GetUserTitleData, GetUserTitleErrors, GetUserTitleResponses, GetUserTitlesData, GetUserTitlesErrors, GetUserTitlesResponses, PostMediaUploadData, PostMediaUploadErrors, PostMediaUploadResponses, UpdateUserData, UpdateUserErrors, UpdateUserResponses, UpdateUserTitleData, UpdateUserTitleErrors, UpdateUserTitleResponses } from './types.gen'; +import type { AddUserTitleData, AddUserTitleErrors, AddUserTitleResponses, DeleteUserTitleData, DeleteUserTitleErrors, DeleteUserTitleResponses, GetTitleData, GetTitleErrors, GetTitleResponses, GetTitlesData, GetTitlesErrors, GetTitlesResponses, GetUsersData, GetUsersErrors, GetUsersIdData, GetUsersIdErrors, GetUsersIdResponses, GetUsersResponses, GetUserTitleData, GetUserTitleErrors, GetUserTitleResponses, GetUserTitlesData, GetUserTitlesErrors, GetUserTitlesResponses, UpdateUserData, UpdateUserErrors, UpdateUserResponses, UpdateUserTitleData, UpdateUserTitleErrors, UpdateUserTitleResponses } from './types.gen'; export type Options = Options2 & { /** @@ -113,18 +113,3 @@ export const updateUserTitle = (options: O ...options.headers } }); - -/** - * Upload an image (PNG, JPEG, or WebP) - * - * Uploads a single image file. Supported formats: **PNG**, **JPEG/JPG**, **WebP**. - * - */ -export const postMediaUpload = (options: Options) => (options.client ?? client).post({ - url: '/media/upload', - ...options, - headers: { - 'Content-Type': 'encoding', - ...options.headers - } -}); diff --git a/modules/frontend/src/api/types.gen.ts b/modules/frontend/src/api/types.gen.ts index d0ca425..d4526a7 100644 --- a/modules/frontend/src/api/types.gen.ts +++ b/modules/frontend/src/api/types.gen.ts @@ -453,7 +453,6 @@ export type AddUserTitleData = { title_id: number; status: UserTitleStatus; rate?: number; - ftime?: string; }; path: { /** @@ -579,7 +578,6 @@ export type UpdateUserTitleData = { body: { status?: UserTitleStatus; rate?: number; - ftime?: string; }; path: { user_id: number; @@ -620,38 +618,3 @@ export type UpdateUserTitleResponses = { }; export type UpdateUserTitleResponse = UpdateUserTitleResponses[keyof UpdateUserTitleResponses]; - -export type PostMediaUploadData = { - body: unknown; - path?: never; - query?: never; - url: '/media/upload'; -}; - -export type PostMediaUploadErrors = { - /** - * Bad request — e.g., invalid/malformed image, empty file - */ - 400: string; - /** - * Unsupported Media Type — e.g., request `Content-Type` is not `multipart/form-data`, - * or the `image` part has an unsupported `Content-Type` (not image/png, image/jpeg, or image/webp) - * - */ - 415: unknown; - /** - * Internal server error - */ - 500: unknown; -}; - -export type PostMediaUploadError = PostMediaUploadErrors[keyof PostMediaUploadErrors]; - -export type PostMediaUploadResponses = { - /** - * Image uploaded successfully - */ - 200: Image; -}; - -export type PostMediaUploadResponse = PostMediaUploadResponses[keyof PostMediaUploadResponses]; diff --git a/modules/image_storage/app/main.py b/modules/image_storage/app/main.py index 2c915c3..ff59d36 100644 --- a/modules/image_storage/app/main.py +++ b/modules/image_storage/app/main.py @@ -99,7 +99,7 @@ async def download_by_url(payload: DownloadByUrlRequest): return {"path": rel} -@app.get("/{path:path}") +@app.get("/media/{path:path}") async def get_image(path: str): """ Отдаёт файл по относительному пути (например, posters/ab/cd/hash.jpg). diff --git a/sql/migrations/000001_init.up.sql b/sql/migrations/000001_init.up.sql index 415b9af..369e455 100644 --- a/sql/migrations/000001_init.up.sql +++ b/sql/migrations/000001_init.up.sql @@ -86,8 +86,7 @@ CREATE TABLE usertitles ( status usertitle_status_t NOT NULL, rate int CHECK (rate > 0 AND rate <= 10), review_id bigint REFERENCES reviews (id) ON DELETE SET NULL, - ctime timestamptz NOT NULL DEFAULT now(), - ftime timestamptz NOT NULL DEFAULT now() + ctime timestamptz NOT NULL DEFAULT now() -- // TODO: series status );