Skip to content
Extraits de code Groupes Projets
Valider 9eee764e rédigé par Mohamed Lemine BAILLAHI's avatar Mohamed Lemine BAILLAHI
Parcourir les fichiers

Merge branch 'feature/client-pagination' into 'develop'

added delete live feature

See merge request !18
parents 067ace0c 903c0720
1 requête de fusion!18added delete live feature
Pipeline #9871 réussi avec les étapes
in 38 secondes
## [0.0.5-RELEASE]
### Added
- New features that have been added.
- added delete live feature.
### Changed
- Changes in existing functionality.
### Deprecated
- Soon-to-be removed features.
### Removed
- Features that have been removed.
### Fixed
- Any bug fixes.
### Security
- Any security improvements.
## [0.0.4-RELEASE]
### Added
- Added request authorization check.
......
......@@ -26,7 +26,7 @@
<dependency>
<groupId>com.marketingconfort</groupId>
<artifactId>mydressin-common</artifactId>
<version>1.0.163-RELEASE</version>
<version>1.0.184-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -37,12 +37,12 @@ public class LiveStreamController {
@RequestParam(value = "status", defaultValue = "ALL") String statusStr,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(value = "sortBy", defaultValue = "title") String sortBy,
@RequestParam(value = "sortDir", defaultValue = "ASC") String sortDir,
@RequestParam(value = "sortBy", defaultValue = "startDate") String sortBy,
@RequestParam(value = "sortDir", defaultValue = "DESC") String sortDir,
@RequestHeader String requestAuthorization) {
LiveStatus status = LiveStatus.valueOf(statusStr);
List<LiveStreamResponse> liveStreams = liveStreamService.getLiveStreamsWithPaginationAndSearch(
List<LiveStreamResponse> liveStreams = liveStreamService.getLiveStreams(
search, status, page, size, sortBy, sortDir);
return ResponseEntity.ok(liveStreams);
......@@ -50,8 +50,13 @@ public class LiveStreamController {
@GetMapping("/client")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public List<LiveStreamResponse> getAllStreamsForClient(@RequestHeader String requestAuthorization) {
return liveStreamService.getAllLiveStreamsForClient();
public List<LiveStreamResponse> getAllStreamsForClient(@RequestHeader String requestAuthorization,
@RequestParam(value = "search", defaultValue = "") String search,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "20") int size,
@RequestParam(value = "sortBy", defaultValue = "startDate") String sortBy,
@RequestParam(value = "sortDir", defaultValue = "DESC") String sortDir) {
return liveStreamService.getAllLiveStreamsForClient(search,page, size,sortBy,sortDir);
}
@GetMapping("/products")
......
......@@ -26,8 +26,8 @@ public interface LiveStreamRepository extends JpaRepository<LiveStream, Long> {
Page<LiveStream> findByTitleContaining(@Param("searchTerm") String searchTerm, Pageable pageable);
@Query("SELECT new com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LiveStreamResponse(l.id, l.title, l.chatName, l.startDate, l.description, l.image, l.status) FROM LiveStream l WHERE l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.REVIEW AND l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.ARCHIVED ORDER BY l.startDate DESC")
List<LiveStreamResponse> findAllLiveStreamsForClient();
@Query("SELECT new com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LiveStreamResponse(l.id, l.title, l.chatName, l.startDate, l.description, l.image, l.status) FROM LiveStream l WHERE LIKE %:searchTerm% l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.REVIEW AND l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.ARCHIVED ORDER BY l.startDate DESC")
List<LiveStreamResponse> findAllLiveStreamsForClient(@Param("searchTerm") String searchTerm ,Pageable pageable);
@Query("SELECT l FROM LiveStream l JOIN l.keysWork kw WHERE kw.keyStream = :streamKey")
Optional<LiveStream> findByStreamKey(@Param("streamKey") String streamKey);
......
......@@ -4,6 +4,9 @@ import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.core.JsonProcessingException;
......@@ -14,8 +17,8 @@ import com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveS
import com.marketingconfort.starter.core.exceptions.S3FunctionalException;
public interface ILiveStreamService {
public List <LiveStreamResponse> getLiveStreamsWithPaginationAndSearch( String search, LiveStatus status ,int page, int size , String sortBy, String sortOrder);
public List<LiveStreamResponse> getAllLiveStreamsForClient();
public List <LiveStreamResponse> getLiveStreams( String search, LiveStatus status ,int page, int size , String sortBy, String sortOrder);
public List<LiveStreamResponse> getAllLiveStreamsForClient(String search, int page, int size, String sortBy, String sortDir) ;
public LiveStreamDto getLiveStream(Long id);
public LiveStreamResponse createLiveStream(LiveStreamDto liveStreamDto, MultipartFile image) throws S3FunctionalException, IOException;
public void startLiveStream(Long id) throws JsonProcessingException ;
......
......@@ -10,6 +10,12 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.marketingconfort.mydressin.common.constant.urlServiceConstant.NameUri;
import com.marketingconfort.mydressin.common.constant.urlServiceConstant.NameUrl;
import com.marketingconfort.mydressin.common.constant.urlServiceConstant.Path.StockManagerServicePath;
import com.marketingconfort.starter.core.services.MCRestTemplateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
......@@ -60,6 +66,9 @@ public class LiveStreamService implements ILiveStreamService {
private final RestTemplate restTemplate;
private final S3FileServiceImpl s3FileService;
private final AWSConfigProperties awsConfigProps;
private final NameUrl nameUrl;
private final MCRestTemplateService mcRestTemplateService;
Logger logger = LoggerFactory.getLogger(LiveStreamService.class);
......@@ -162,19 +171,18 @@ public class LiveStreamService implements ILiveStreamService {
startDto, LiveStopDto.class);
if (response != null) {
System.out.println("Response received: " + response.toString());
logger.info("Successfully started recording: " + response.toString());
liveStream.setStartedAt(ZonedDateTime.now(ZoneOffset.UTC).toLocalDateTime());
liveStream.setStatus(LiveStatus.ONGOING);
liveStream.setFfmpegPid(response.getPid());
liveStreamRepository.save(liveStream);
} else {
System.out.println("Failed to start recording: no response received.");
logger.error("Response from start-recording was null.");
}
} catch (ResourceAccessException e) {
System.err.println("Resource access error: " + e.getMessage());
logger.error("ResourceAccessException: " + e.getMessage());
} catch (Exception e) {
System.err.println("An unexpected error occurred: " + e.getMessage());
e.printStackTrace();
logger.error("Exception: " + e.getMessage());
}
}
......@@ -197,8 +205,15 @@ public class LiveStreamService implements ILiveStreamService {
@Override
public void deleteLive(Long id) {
liveStreamRepository.deleteById(id);
public void deleteLive(Long liveId) {
liveStreamRepository.deleteById(liveId);
String url = nameUrl.getStockManagementService() + NameUri.STOCK + StockManagerServicePath.HIDE_LIVE_PRODUCT+"?liveId="+liveId;
try{
mcRestTemplateService.postForObject(url, null, Void.class);
} catch (Exception e) {
logger.error("Exception: " + e.getMessage());
}
}
......@@ -229,8 +244,9 @@ public class LiveStreamService implements ILiveStreamService {
@Override
public List<LiveStreamResponse> getAllLiveStreamsForClient() {
return liveStreamRepository.findAllLiveStreamsForClient();
public List<LiveStreamResponse> getAllLiveStreamsForClient(String search, int page, int size, String sortBy, String sortDir) {
Pageable pageable = PageRequest.of(page, size, Sort.Direction.fromString(sortDir), sortBy);
return liveStreamRepository.findAllLiveStreamsForClient(search, pageable);
}
@Override
......@@ -244,8 +260,7 @@ public class LiveStreamService implements ILiveStreamService {
@Override
public LiveStream getOnGoingLiveStream() {
return liveStreamRepository.getOngoingLiveStream()
.orElseThrow(EntityNotFoundException::new);
return liveStreamRepository.getOngoingLiveStream().orElse(null);
}
private KeysWork createKeysWork(LiveStream liveStream) {
......@@ -303,7 +318,7 @@ public class LiveStreamService implements ILiveStreamService {
@Override
public List<LiveStreamResponse> getLiveStreamsWithPaginationAndSearch(String search, LiveStatus status, int page, int size, String sortBy, String sortDir) {
public List<LiveStreamResponse> getLiveStreams(String search, LiveStatus status, int page, int size, String sortBy, String sortDir) {
Pageable pageable = PageRequest.of(page, size, Sort.Direction.fromString(sortDir), sortBy);
Page<LiveStream> liveStreamPage;
......
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter