Implement backend API and database services in Docker setup
- Added a new `api` service for the NestJS backend, including health checks and dependencies on PostgreSQL, Redis, and MinIO. - Introduced PostgreSQL and Redis services with health checks and configurations for data persistence. - Added MinIO for S3-compatible object storage and a one-shot service to initialize required buckets. - Updated the Nginx configuration to proxy requests to the new backend API and MinIO storage. - Enhanced the Dockerfile to support the new API environment variables and configurations. - Updated the `package.json` and `package-lock.json` to include new dependencies for QR code generation and other utilities. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
40
backend/src/season/dto/response/season-rent.dto.ts
Normal file
40
backend/src/season/dto/response/season-rent.dto.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { ProjectDTO } from 'src/projects/dto/response/project.dto';
|
||||
import { SeasonRent } from 'src/season/entities/season-rents.entity';
|
||||
import { SeasonDTO } from './season.dto';
|
||||
import { ContentDTO } from 'src/contents/dto/response/content.dto';
|
||||
|
||||
export class SeasonRentDTO {
|
||||
id: string;
|
||||
status: 'active' | 'expired';
|
||||
usdAmount: number;
|
||||
createdAt: Date;
|
||||
expiresAt: Date;
|
||||
title: string;
|
||||
project: ProjectDTO;
|
||||
season: SeasonDTO;
|
||||
contents: ContentDTO[];
|
||||
|
||||
constructor(seasonRent: SeasonRent) {
|
||||
this.id = seasonRent.id;
|
||||
const expiresAt = new Date(seasonRent.createdAt);
|
||||
expiresAt.setDate(expiresAt.getDate() + 2);
|
||||
this.status =
|
||||
seasonRent.status == 'paid' && new Date() < expiresAt
|
||||
? 'active'
|
||||
: 'expired';
|
||||
this.usdAmount = seasonRent.usdAmount;
|
||||
this.project = seasonRent?.season?.project
|
||||
? new ProjectDTO(seasonRent.season.project)
|
||||
: undefined;
|
||||
this.title =
|
||||
seasonRent.season?.title || seasonRent.season?.project?.title || '';
|
||||
this.createdAt = seasonRent.createdAt;
|
||||
this.expiresAt = expiresAt;
|
||||
this.contents =
|
||||
seasonRent.season?.contents?.map((content) => new ContentDTO(content)) ||
|
||||
[];
|
||||
this.season = seasonRent?.season
|
||||
? new SeasonDTO(seasonRent.season)
|
||||
: undefined;
|
||||
}
|
||||
}
|
||||
29
backend/src/season/dto/response/season.dto.ts
Normal file
29
backend/src/season/dto/response/season.dto.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { ContentDTO } from 'src/contents/dto/response/content.dto';
|
||||
import { Season } from 'src/season/entities/season.entity';
|
||||
|
||||
export class SeasonDTO {
|
||||
id: string;
|
||||
projectId: string;
|
||||
seasonNumber: number;
|
||||
rentalPrice: number;
|
||||
title?: string;
|
||||
description?: string;
|
||||
isActive: boolean;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
contents?: ContentDTO[];
|
||||
|
||||
constructor(season: Season) {
|
||||
this.id = season.id;
|
||||
this.projectId = season.projectId;
|
||||
this.seasonNumber = season.seasonNumber;
|
||||
this.rentalPrice = season.rentalPrice;
|
||||
this.title = season.title;
|
||||
this.description = season.description;
|
||||
this.isActive = season.isActive;
|
||||
this.createdAt = season.createdAt;
|
||||
this.updatedAt = season.updatedAt;
|
||||
this.contents =
|
||||
season?.contents?.map((content) => new ContentDTO(content)) || [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user