Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c90ca8c
Настройки docker и pom.xml
NadezhdaTA Aug 7, 2025
5d3a86c
Настройки docker и pom.xml
NadezhdaTA Aug 7, 2025
65c5a24
Настройки docker и pom.xml
NadezhdaTA Aug 7, 2025
742f8b9
Настройки docker и pom.xml
NadezhdaTA Aug 7, 2025
ca3691b
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 11, 2025
0a02d06
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 11, 2025
80bcdb9
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 11, 2025
025e922
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 12, 2025
79b3b86
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 12, 2025
ad715d4
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 16, 2025
4437ab3
Реализованы stat-server, stat-dto, stat-client
NadezhdaTA Aug 16, 2025
8f27d26
Реализована функциональность по добавлению, удалению и получению спис…
NadezhdaTA Aug 22, 2025
5ee686a
Реализована функциональность по добавлению, удалению и получению кате…
NadezhdaTA Aug 24, 2025
6ccb365
Реализована функциональность по добавлению, удалению и получению собы…
NadezhdaTA Aug 28, 2025
d05a678
Реализована функциональность по добавлению, удалению и получению подб…
NadezhdaTA Aug 29, 2025
2917476
Реализован все эндпоинты
NadezhdaTA Aug 31, 2025
a16f862
2ой этап диплома
NadezhdaTA Sep 3, 2025
65675b2
2ой этап диплома
NadezhdaTA Sep 3, 2025
c410e3b
2ой этап диплома
NadezhdaTA Sep 3, 2025
511d3c1
2ой этап диплома
NadezhdaTA Sep 4, 2025
4bd96ee
2ой этап диплома
NadezhdaTA Sep 4, 2025
51e0782
2ой этап диплома
NadezhdaTA Sep 4, 2025
85728c2
2ой этап диплома
NadezhdaTA Sep 4, 2025
65d0853
2ой этап диплома
NadezhdaTA Sep 4, 2025
b3c340c
2ой этап диплома
NadezhdaTA Sep 4, 2025
c2dcf61
2ой этап диплома
NadezhdaTA Sep 4, 2025
36ec5fb
2ой этап диплома
NadezhdaTA Sep 5, 2025
5a888ea
2ой этап диплома
NadezhdaTA Sep 5, 2025
ad83fd1
2ой этап диплома
NadezhdaTA Sep 5, 2025
63dc192
2ой этап диплома
NadezhdaTA Sep 5, 2025
aaf5525
2ой этап диплома
NadezhdaTA Sep 6, 2025
9f20cce
2ой этап диплома
NadezhdaTA Sep 6, 2025
1aa2f5c
Merge remote-tracking branch 'origin/main_svc' into main_svc
NadezhdaTA Sep 6, 2025
3eaebbd
2ой этап диплома(с исправлениями)
NadezhdaTA Sep 8, 2025
451c040
2ой этап диплома(с исправлениями)
NadezhdaTA Sep 8, 2025
d2803ef
2ой этап диплома(с исправлениями)
NadezhdaTA Sep 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,65 @@
version: '3.8'

services:

stats-server:
container_name: stats-server
image: stats-server
build: ./stat/stat-server
ports:
- "9090:9090"
depends_on:
- stats-db
environment:
SPRING_PROFILES_ACTIVE: docker
SPRING_DATASOURCE_URL: jdbc:postgresql://stats-db:5432/stats-service
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: 12345

stats-db:
image: postgres:16.1
container_name: postgres-stat
ports:
- "6541:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: 12345
POSTGRES_DB: stats-service
healthcheck:
test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER
interval: 5s
timeout: 5s
retries: 10

ewm-service:
build:
context: ./evm-service
dockerfile: Dockerfile
image: explore-with-me-service
container_name: explore-with-me-service
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: docker
SPRING_DATASOURCE_URL: jdbc:postgresql://ewm-db:5432/ewm-service
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: 12345
depends_on:
- ewm-db
- stats-server

ewm-db:
image: postgres:16.1
container_name: postgres-service
ports:
- "6542:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: 12345
POSTGRES_DB: ewm-service
healthcheck:
test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER
interval: 5s
timeout: 5s
retries: 10

5 changes: 5 additions & 0 deletions evm-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM eclipse-temurin:21-jre-jammy
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar"]
154 changes: 154 additions & 0 deletions evm-service/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>ru.practicum</groupId>
<artifactId>explore-with-me</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>evm-service</artifactId>

<properties>
<querydsl.version>5.0.0</querydsl.version>
<org.mapstruct.version>1.6.3</org.mapstruct.version>
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
</properties>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct-binding.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>ru.practicum</groupId>
<artifactId>stat-dto</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>ru.practicum</groupId>
<artifactId>stat-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct-binding.version}</version>
</path>
</annotationProcessorPaths>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>
-Amapstruct.suppressGeneratorTimestamp=true
</arg>
<arg>
-Amapstruct.suppressGeneratorVersionInfoComment=true
</arg>
<arg>
-Amapstruct.verbose=true
</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>


</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package ru.practicum.Category.Controller;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import ru.practicum.Category.DTO.CategoryDTO;
import ru.practicum.Category.DTO.NewCategoryDTO;
import ru.practicum.Category.Service.Admin.CategoryAdminServiceImpl;

@RestController
@RequestMapping("/admin/categories")
@RequiredArgsConstructor
public class CategoryAdminController {
private final CategoryAdminServiceImpl categoryService;

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public CategoryDTO createCategory(@RequestBody @Valid NewCategoryDTO category) {
return categoryService.addCategory(category);
}

@DeleteMapping("/{catId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteCategory(@PathVariable Integer catId) {
categoryService.deleteCategory(catId);
}

@PatchMapping("/{catId}")
@ResponseStatus(HttpStatus.OK)
public CategoryDTO updateCategory(@PathVariable Integer catId, @RequestBody @Valid CategoryDTO category) {
return categoryService.updateCategory(catId, category);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package ru.practicum.Category.Controller;

import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import ru.practicum.Category.DTO.CategoryDTO;
import ru.practicum.Category.Service.Public.CategoryPublicService;

import java.util.List;

@RestController
@RequestMapping("/categories")
@RequiredArgsConstructor
public class CategoryPublicController {
private final CategoryPublicService categoryService;

@GetMapping("/{catId}")
public CategoryDTO getCategory(@PathVariable Integer catId) {
return categoryService.getCategory(catId);
}

@GetMapping
public List<CategoryDTO> getCategories(@RequestParam(defaultValue = "0") @PositiveOrZero Integer from,
@RequestParam(defaultValue = "10") @Positive Integer size) {
return categoryService.getCategories(from, size);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package ru.practicum.Category.DTO;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class CategoryDTO {
private Integer id;

@NotBlank
@Size(max = 50)
private String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ru.practicum.Category.DTO;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class NewCategoryDTO {
@NotBlank
@Size(max = 50)
private String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.practicum.Category.Mapper;

import org.mapstruct.Mapper;
import ru.practicum.Category.DTO.CategoryDTO;
import ru.practicum.Category.DTO.NewCategoryDTO;
import ru.practicum.Category.Model.Category;

@Mapper(componentModel = "spring")
public interface CategoryMapper {
Category toCategory(NewCategoryDTO categoryDTO);

CategoryDTO toCategoryDTO(Category category);

Category toCategory(CategoryDTO categoryDTO);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ru.practicum.Category.Model;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "categories")
public class Category {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;

@Column(name = "name", length = 50)
private String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ru.practicum.Category.Repository;

import org.springframework.data.jpa.repository.JpaRepository;
import ru.practicum.Category.Model.Category;

import java.util.Optional;

public interface CategoryRepository extends JpaRepository<Category, Integer> {
Category save(Category category);

void deleteById(Integer id);

Optional<Category> findById(Integer id);


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ru.practicum.Category.Service.Admin;

import ru.practicum.Category.DTO.CategoryDTO;
import ru.practicum.Category.DTO.NewCategoryDTO;

public interface CategoryAdminService {
CategoryDTO addCategory(NewCategoryDTO categoryDTO);

void deleteCategory(Integer catId);

CategoryDTO updateCategory(int id, CategoryDTO categoryDTO);
}
Loading