From a052979f5e44b7617ef72f02c4f9d6c2c4afa154 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anesa=20Fazlagi=C4=87?= <xfazlag@fi.muni.cz>
Date: Wed, 12 Apr 2023 20:20:26 +0200
Subject: [PATCH] finished database for electricity prices

---
 electricityTarifMicroservice/pom.xml          | 18 ++++
 .../electricityprices/ElectricityPrice.java   |  7 +-
 .../ElectricityPriceController.java           | 51 +++++++++---
 .../ElectricityPriceMapper.java               | 28 +++----
 .../ElectricityPriceRepository.java           | 10 ++-
 .../ElectricityPriceService.java              | 14 ++--
 .../ElectricityPriceServiceImpl.java          | 82 +++++++++----------
 .../ElectricityPriceSetRequest.java           | 16 ----
 .../dtos/ElectricityPriceGetFullDto.java      |  9 +-
 .../dtos/ElectricityPriceGetSlimDto.java      | 14 ++++
 .../dtos/ElectricityPriceHighTariffDto.java   | 23 ------
 .../dtos/ElectricityPriceLowTariffDto.java    | 23 ------
 .../dtos/ElectricityPricePostDto.java         |  5 +-
 .../src/main/resources/application.properties | 11 +++
 14 files changed, 159 insertions(+), 152 deletions(-)
 delete mode 100644 electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceSetRequest.java
 create mode 100644 electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetSlimDto.java
 delete mode 100644 electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceHighTariffDto.java
 delete mode 100644 electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceLowTariffDto.java
 create mode 100644 electricityTarifMicroservice/src/main/resources/application.properties

diff --git a/electricityTarifMicroservice/pom.xml b/electricityTarifMicroservice/pom.xml
index 49ace8e..2f7d5cb 100644
--- a/electricityTarifMicroservice/pom.xml
+++ b/electricityTarifMicroservice/pom.xml
@@ -26,6 +26,24 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.hsqldb</groupId>
+            <artifactId>hsqldb</artifactId>
+            <version>2.7.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>42.5.4</version>
+        </dependency>
     </dependencies>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPrice.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPrice.java
index 50b9934..1a920cd 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPrice.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPrice.java
@@ -13,12 +13,11 @@ import java.io.Serializable;
 @Entity
 @NoArgsConstructor
 @AllArgsConstructor
-@Table(name = "electricity_price")
+@Table(name = "electricityprices")
 public class ElectricityPrice implements Serializable {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
-  @Column(name = "electricity_price_id")
-  private String id;
+  private Long id;
 
   @Override
   public String toString() {
@@ -31,7 +30,7 @@ public class ElectricityPrice implements Serializable {
   }
 
   @Column
-  private String companyId;
+  private Long companyId;
 
   @Column
   private double priceHighTariff;
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceController.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceController.java
index d3aae6f..34dda1c 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceController.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceController.java
@@ -1,12 +1,17 @@
 package cz.muni.fi.pa165.microservice4.electricityprices;
 
+import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceGetFullDto;
+import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPricePostDto;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.RestController;
@@ -23,7 +28,7 @@ import java.util.List;
 
 @Slf4j
 @RestController
-@RequestMapping(value = "/api/v1/electricity", produces = MediaType.APPLICATION_JSON_VALUE)
+@RequestMapping(value = "/api/electricityprices", produces = MediaType.APPLICATION_JSON_VALUE)
 public class ElectricityPriceController {
   private final ElectricityPriceServiceImpl electricityPriceService;
 
@@ -57,8 +62,8 @@ public class ElectricityPriceController {
                                           schema = @Schema(implementation = ElectricityPrice.class))
                           })
           })
-  @GetMapping(path = "/electricityprices")
-  public List<ElectricityPrice> getAllElectricityPrice() {
+  @GetMapping
+  public List<ElectricityPriceGetFullDto> getAllElectricityPrice() {
     return electricityPriceService.getAllElectricityPrice();
   }
 
@@ -84,14 +89,15 @@ public class ElectricityPriceController {
                           description = "Invalid or non-exsisting company id supplied",
                           content = @Content)
           })
-  @GetMapping(value = "/electricityprices/{companyId}")
-  public double getElectricityPrice(@PathVariable("companyId") String companyId) {
+  @GetMapping(path = "/{companyId}")
+  public double getElectricityPrice(@PathVariable("companyId") Long companyId) {
     return electricityPriceService.getElectricityPrice(companyId);
   }
 
   @Operation(
           summary = "Set electricity price for the company",
-          description = "Changes an electricity price for the provided company id in URL." +
+          description = "Adds/Changes an electricity price for the provided company id" +
+                  "request body contains the companyId, priceHighTariff, priceLowTariff" +
                   "Returns an electricity price object from the database after commiting the change." +
                   "In case company id not being found, new electricity price object is entered in the database." +
                   "Returns an electricity price for the newly created object.",
@@ -100,15 +106,14 @@ public class ElectricityPriceController {
           value = {
                   @ApiResponse(
                           responseCode = "200",
-                          description = "Updated electricity price of a company",
+                          description = "Added/Updated electricity price of a company",
                           content = {
                                   @Content(mediaType = "application/json",
                                           schema = @Schema(implementation = ElectricityPrice.class))
                           })
           })
-  @PostMapping(path = "/electricityprices")
-  public ElectricityPrice setElectricityPrice(@RequestBody ElectricityPriceSetRequest req) {
-    log.info("new price adding {}", req);
+  @PostMapping
+  public ElectricityPrice setElectricityPrice(@Valid @RequestBody ElectricityPricePostDto req) {
     return electricityPriceService.setElectricityPrice(req);
   }
 
@@ -116,7 +121,7 @@ public class ElectricityPriceController {
           summary = "Delete electricity price for the company",
           description = "Searches an electricity price by provided company id in URL." +
                   "Deletes an electricity price object from the database if found." +
-                  "Otherwise, throws an exception.",
+                  "Otherwise, returns a message about the error.",
           tags = "{electricity price}")
   @ApiResponses(
           value = {
@@ -131,9 +136,29 @@ public class ElectricityPriceController {
                           description = "Invalid or non-exsisting company id supplied",
                           content = @Content)
           })
-  @DeleteMapping(path = "/electricityprices/{companyId}")
-  public String deleteElectricityPriceForCompany(@PathVariable("companyId") String companyId) {
+  @DeleteMapping(path = "/{companyId}")
+  public String deleteElectricityPriceForCompany(@PathVariable("companyId") Long companyId) {
     return electricityPriceService.deleteElectricityPriceForCompany(companyId);
   }
 
+  @Operation(
+          summary = "Get all electricity prices for all companies per page",
+          description = "Returns a list of all exsisting electricity price objects per page from the database." +
+                  "In case there are none, it returns an empty list.",
+          tags = "{electricity price}")
+  @ApiResponses(
+          value = {
+                  @ApiResponse(
+                          responseCode = "200",
+                          description = "Found all electricity prices",
+                          content = {
+                                  @Content(
+                                          mediaType = "application/json",
+                                          schema = @Schema(implementation = ElectricityPrice.class))
+                          })
+          })
+  @GetMapping("/page")
+  public Page<ElectricityPriceGetFullDto> getAllElectricityPricePagable(Pageable pageable) {
+    return electricityPriceService.getAllElectricityPricePagable(pageable);
+  }
 }
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceMapper.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceMapper.java
index 62404f0..7f13f36 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceMapper.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceMapper.java
@@ -1,31 +1,29 @@
 package cz.muni.fi.pa165.microservice4.electricityprices;
 
 import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceGetFullDto;
-import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceHighTariffDto;
-import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceLowTariffDto;
 import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPricePostDto;
+import org.mapstruct.BeforeMapping;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
 
 import java.util.List;
 
 @Mapper(componentModel = "spring")
-public interface ElectricityPriceMapper {
-    @Mapping(target = "price", source = "electricityPrice.priceLowTariff")
-    List<ElectricityPriceLowTariffDto> electricityPriceToElectricityPriceLowTariffDto(List<ElectricityPrice> electricityPrice);
+public abstract class ElectricityPriceMapper {
+    @BeforeMapping()
+    void addId() {
 
-    @Mapping(target = "price", source = "electricityPrice.priceHighTariff")
-    List<ElectricityPriceHighTariffDto> electricityPriceToElectricityPriceHighTariffDto(List<ElectricityPrice> electricityPrice);
+    }
 
-    List<ElectricityPriceGetFullDto> electricityPriceListToElectricityPriceGetFullDtoList(List<ElectricityPrice> electricityPriceList);
+    abstract List<ElectricityPriceGetFullDto> electricityPriceListToElectricityPriceGetFullDtoList(List<ElectricityPrice> electricityPriceList);
 
-    ElectricityPrice electricityPricePostDtoToElectricityPrice(ElectricityPricePostDto electricityPricePostDto);
+    abstract ElectricityPrice electricityPricePostDtoToElectricityPrice(ElectricityPricePostDto electricityPricePostDto);
 
-    ElectricityPriceGetFullDto electricityPriceToElectricityPriceGetFullDto(ElectricityPrice electricityPrice);
+    abstract ElectricityPriceGetFullDto electricityPriceToElectricityPriceGetFullDto(ElectricityPrice electricityPrice);
 
-    @Mapping(target = "price", source = "electricityPrice.priceLowTariff")
-    ElectricityPriceLowTariffDto electricityPriceToElectricityPriceLowTariffDto(ElectricityPrice electricityPrice);
-
-    @Mapping(target = "price", source = "electricityPrice.priceHighTariff")
-    ElectricityPriceHighTariffDto electricityPriceToElectricityPriceHighTariffDto(ElectricityPrice electricityPrice);
+    Page<ElectricityPriceGetFullDto> mapToPageDto(Page<ElectricityPrice> prices) {
+        return new PageImpl<>(electricityPriceListToElectricityPriceGetFullDtoList(prices.getContent()), prices.getPageable(), prices.getTotalPages());
+    }
 }
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceRepository.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceRepository.java
index ba6ffbd..fdefa83 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceRepository.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceRepository.java
@@ -1,9 +1,15 @@
 package cz.muni.fi.pa165.microservice4.electricityprices;
 
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface ElectricityPriceRepository extends JpaRepository<ElectricityPrice, String> {
-    ElectricityPrice findByCompanyId(String companyId);
+public interface ElectricityPriceRepository extends JpaRepository<ElectricityPrice, Long> {
+    ElectricityPrice findByCompanyId(Long companyId);
+
+    @Modifying
+    @Query(value = "DELETE FROM electricityprices WHERE company_id = ?1", nativeQuery = true)
+    void deleteCompany(Long companyId);
 }
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceService.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceService.java
index 2c56984..a11b04c 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceService.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceService.java
@@ -1,19 +1,21 @@
 package cz.muni.fi.pa165.microservice4.electricityprices;
 
+import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceGetFullDto;
+import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPricePostDto;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
 import java.util.List;
 
 public interface ElectricityPriceService {
+  ElectricityPriceGetFullDto getElectricityPriceObj(Long companyId);
+  double getElectricityPrice(Long companyId); // dependent on time - low or high tariff
 
-  double getElectricityPrice(String companyId); // dependent on time - low or high tariff
+  Page<ElectricityPriceGetFullDto> getAllElectricityPricePagable(Pageable pages);
 
-  Page<ElectricityPrice> getAllElectricityPricePagable(Pageable pages);
+  List<ElectricityPriceGetFullDto> getAllElectricityPrice();
 
-  List<ElectricityPrice> getAllElectricityPrice();
+  String deleteElectricityPriceForCompany(Long companyId);
 
-  ElectricityPrice setElectricityPrice(ElectricityPriceSetRequest req);
-
-  String deleteElectricityPriceForCompany(String companyId);
+    ElectricityPrice setElectricityPrice(ElectricityPricePostDto req);
 }
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceServiceImpl.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceServiceImpl.java
index d6b85a5..f1855c9 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceServiceImpl.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceServiceImpl.java
@@ -1,6 +1,7 @@
 package cz.muni.fi.pa165.microservice4.electricityprices;
 
-import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceLowTariffDto;
+import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPriceGetFullDto;
+import cz.muni.fi.pa165.microservice4.electricityprices.dtos.ElectricityPricePostDto;
 import jakarta.annotation.PostConstruct;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -12,42 +13,43 @@ import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalTime;
 import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
-import java.util.UUID;
-import java.util.concurrent.CopyOnWriteArrayList;
 
 @Service
 public class ElectricityPriceServiceImpl implements ElectricityPriceService {
   private final ElectricityPriceRepository electricityPriceRepository;
+  private final ElectricityPriceMapper mapStructMapper;
 
   public ElectricityPriceServiceImpl(ElectricityPriceRepository electricityPriceRepository, ElectricityPriceMapper mapStructMapper) {
     this.electricityPriceRepository = electricityPriceRepository;
     this.mapStructMapper = mapStructMapper;
   }
 
-  private final ElectricityPriceMapper mapStructMapper;
-
-  private final List<ElectricityPrice> list = new CopyOnWriteArrayList<>();
-
   @PostConstruct
   public void init() {
-    list.add(
+    electricityPriceRepository.save(
         ElectricityPrice.builder()
-            .id("1")
-            .companyId("1")
-            .priceHighTariff(300.0)
-            .priceLowTariff(200.0)
+            .companyId(1L)
+            .priceHighTariff(399.0)
+            .priceLowTariff(299.0)
             .build());
   }
 
   @Override
   @Transactional(readOnly = true)
-  public double getElectricityPrice(String companyId) {
-    ElectricityPrice electricityPrice = Optional.of(electricityPriceRepository.findByCompanyId(companyId)).orElseThrow(() -> new NoElectricityPriceForCompanyException("No electricity price information for that company."));
-    ElectricityPriceLowTariffDto electricityPriceLowTariffDto = new ElectricityPriceLowTariffDto();
-    electricityPriceLowTariffDto.setPrice(getPriceAcordingToDate(electricityPrice));
-    return 0;
+  public double getElectricityPrice(Long companyId) {
+    ElectricityPrice electricityPrice = electricityPriceRepository.findByCompanyId(companyId);
+    if (electricityPrice == null) {
+      System.out.println("OKKK");
+      throw new RuntimeException("No electricity price information for that company.");
+    }
+    return getPriceAcordingToDate(electricityPrice);
+  }
+
+  @Override
+  @Transactional(readOnly = true)
+  public ElectricityPriceGetFullDto getElectricityPriceObj(Long companyId) {
+    return mapStructMapper.electricityPriceToElectricityPriceGetFullDto(electricityPriceRepository.findByCompanyId(companyId));
   }
 
   private double getPriceAcordingToDate(ElectricityPrice price) {
@@ -64,41 +66,33 @@ public class ElectricityPriceServiceImpl implements ElectricityPriceService {
 
   @Override
   @Transactional(readOnly = true)
-  public List<ElectricityPrice> getAllElectricityPrice() {
-    return electricityPriceRepository.findAll();
+  public List<ElectricityPriceGetFullDto> getAllElectricityPrice() {
+    return mapStructMapper.electricityPriceListToElectricityPriceGetFullDtoList(electricityPriceRepository.findAll());
   }
 
   @Override
   @Transactional(readOnly = true)
-  public Page<ElectricityPrice> getAllElectricityPricePagable(Pageable pages) {
-    return electricityPriceRepository.findAll(pages);
+  public Page<ElectricityPriceGetFullDto> getAllElectricityPricePagable(Pageable pageable) {
+    return mapStructMapper.mapToPageDto(electricityPriceRepository.findAll(pageable));
   }
 
-  public ElectricityPrice setElectricityPrice(ElectricityPriceSetRequest req) {
-    for (ElectricityPrice price:
-         list) {
-      if(Objects.equals(price.getCompanyId(), req.getCompanyId())) {
-        price.setPriceLowTariff(req.getPriceLowTariff());
-        price.setPriceHighTariff(req.getPriceHighTariff());
-        return price;
-      }
-    }
-    ElectricityPrice newPrice = new ElectricityPrice(UUID.randomUUID().toString(), req.getCompanyId(), req.getPriceHighTariff(), req.getPriceLowTariff());
-    list.add(newPrice);
-    return newPrice;
+  @Override
+  @Transactional
+  public String deleteElectricityPriceForCompany(Long companyId) {
+    return Optional.ofNullable(electricityPriceRepository.findByCompanyId(companyId))
+            .map(electricityPrice -> {
+              electricityPriceRepository.deleteCompany(companyId);
+              return "Deleted electricity price for a company.";
+            })
+            .orElse("Did not delete the electricity prices - company not found.");
   }
 
   @Override
-  @ExceptionHandler
-  public String deleteElectricityPriceForCompany(String companyId) {
-    for (ElectricityPrice price:
-            list) {
-      if(Objects.equals(price.getCompanyId(), companyId)) {
-        list.remove(price);
-        return "deleted electricity prices for company with companyId " + companyId;
-      }
-    }
-    throw new NoElectricityPriceForCompanyException("Did not delete the electricity prices - company not found.");
+  @Transactional
+  public ElectricityPrice setElectricityPrice(ElectricityPricePostDto req) {
+    Optional.ofNullable(electricityPriceRepository.findByCompanyId(req.getCompanyId()))
+            .ifPresent(electricityPriceRepository::delete);
+    return electricityPriceRepository.save(mapStructMapper.electricityPricePostDtoToElectricityPrice(req));
   }
 
 
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceSetRequest.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceSetRequest.java
deleted file mode 100644
index 639c565..0000000
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/ElectricityPriceSetRequest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cz.muni.fi.pa165.microservice4.electricityprices;
-
-import lombok.Builder;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Builder
-@Data
-public class ElectricityPriceSetRequest {
-  private String companyId;
-  private double priceHighTariff;
-  private double priceLowTariff;
-}
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetFullDto.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetFullDto.java
index 4451349..e1396a1 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetFullDto.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetFullDto.java
@@ -1,9 +1,14 @@
 package cz.muni.fi.pa165.microservice4.electricityprices.dtos;
 
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
 public class ElectricityPriceGetFullDto {
-    private String id;
+    private Long id;
 
-    private String companyId;
+    private Long companyId;
 
     private double priceHighTariff;
 
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetSlimDto.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetSlimDto.java
new file mode 100644
index 0000000..6f8f25b
--- /dev/null
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceGetSlimDto.java
@@ -0,0 +1,14 @@
+package cz.muni.fi.pa165.microservice4.electricityprices.dtos;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ElectricityPriceGetSlimDto {
+    private Long id;
+
+    private String companyId;
+
+    private double price;
+}
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceHighTariffDto.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceHighTariffDto.java
deleted file mode 100644
index d468642..0000000
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceHighTariffDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package cz.muni.fi.pa165.microservice4.electricityprices.dtos;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ElectricityPriceHighTariffDto {
-    private String id;
-
-    private String companyId;
-
-    private double price;
-
-    @Override
-    public String toString() {
-        return "ElectricityPriceGetSlimDto{" +
-                "id='" + id + '\'' +
-                ", companyId='" + companyId + '\'' +
-                ", price=" + price +
-                '}';
-    }
-}
\ No newline at end of file
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceLowTariffDto.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceLowTariffDto.java
deleted file mode 100644
index 9ea1d8d..0000000
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPriceLowTariffDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package cz.muni.fi.pa165.microservice4.electricityprices.dtos;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ElectricityPriceLowTariffDto {
-    private String id;
-
-    private String companyId;
-
-    private double price;
-
-    @Override
-    public String toString() {
-        return "ElectricityPriceGetSlimDto{" +
-                "id='" + id + '\'' +
-                ", companyId='" + companyId + '\'' +
-                ", price=" + price +
-                '}';
-    }
-}
diff --git a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPricePostDto.java b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPricePostDto.java
index 63f4ec6..8a520b7 100644
--- a/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPricePostDto.java
+++ b/electricityTarifMicroservice/src/main/java/cz/muni/fi/pa165/microservice4/electricityprices/dtos/ElectricityPricePostDto.java
@@ -9,12 +9,9 @@ import lombok.Setter;
 @Setter
 public class ElectricityPricePostDto {
 
-    @JsonProperty("id")
-    private int id;
-
     @NotNull
     @JsonProperty("companyId")
-    private String companyId;
+    private Long companyId;
 
     @NotNull
     @JsonProperty("priceHighTariff")
diff --git a/electricityTarifMicroservice/src/main/resources/application.properties b/electricityTarifMicroservice/src/main/resources/application.properties
new file mode 100644
index 0000000..0efa0a3
--- /dev/null
+++ b/electricityTarifMicroservice/src/main/resources/application.properties
@@ -0,0 +1,11 @@
+#spring.h2.console.enabled=true
+#spring.jpa.properties.hibernate.globally_quoted_identifiers=true
+spring.jpa.hibernate.ddl-auto=create
+spring.jpa.open-in-view=false
+spring.datasource.url=jdbc:h2:mem:electricity-prices;MODE=PostgreSQL
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=
+spring.datasource.password=
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+spring.jpa.show-sql=true
+spring.cache.type=NONE
\ No newline at end of file
-- 
GitLab