Skip to content

Commit

Permalink
feature/user-scheduled-blogs-list
Browse files Browse the repository at this point in the history
  • Loading branch information
rohit-zip committed Aug 29, 2024
1 parent 8a6aa36 commit a357f18
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,7 @@ public static class LikeController {
public static final String BASE_PATH = "/like";
}

public static class SchedulerController {
public static final String BASE_PATH = "/scheduler";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.bloggios.blog.controller;

import com.bloggios.authenticationconfig.payload.AuthenticatedUser;
import com.bloggios.blog.constants.EndpointConstants;
import com.bloggios.blog.service.SchedulerService;
import com.bloggios.blog.utils.AsyncUtils;
import com.bloggios.elasticsearch.configuration.payload.response.ListResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* Owner - Rohit Parihar
* Author - rohit
* Project - blog-provider-application
* Package - com.bloggios.blog.controller
* Created_on - August 30 - 2024
* Created_at - 00:44
*/

@RestController
@RequestMapping(EndpointConstants.SchedulerController.BASE_PATH)
@RequiredArgsConstructor
public class SchedulerController {

private final SchedulerService schedulerService;

@GetMapping
public ResponseEntity<ListResponse> getUserScheduledBlogs(@AuthenticationPrincipal AuthenticatedUser authenticatedUser) {
return ResponseEntity.ok(AsyncUtils.getAsyncResult(schedulerService.getUserScheduler(authenticatedUser)));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.bloggios.blog.implementation;

import com.bloggios.authenticationconfig.payload.AuthenticatedUser;
import com.bloggios.blog.constants.BeanConstants;
import com.bloggios.blog.dao.implementation.pgsqlimplementation.SchedulerDataDao;
import com.bloggios.blog.modal.SchedulerData;
import com.bloggios.blog.service.SchedulerService;
import com.bloggios.elasticsearch.configuration.payload.response.ListResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
* Owner - Rohit Parihar
* Author - rohit
* Project - blog-provider-application
* Package - com.bloggios.blog.implementation
* Created_on - August 30 - 2024
* Created_at - 00:50
*/

@Service
@RequiredArgsConstructor
@Slf4j
public class SchedulerServiceImplementation implements SchedulerService {

private final SchedulerDataDao schedulerDataDao;

@Override
@Async(BeanConstants.ASYNC_TASK_EXTERNAL_POOL)
public CompletableFuture<ListResponse> getUserScheduler(AuthenticatedUser authenticatedUser) {
long startTime = System.currentTimeMillis();
List<SchedulerData> byUserId = schedulerDataDao.findByUserId(authenticatedUser.getUserId());
ListResponse listResponse = ListResponse
.builder()
.page(0)
.size(byUserId.size())
.object(byUserId)
.totalRecordsCount(byUserId.size())
.build();
log.info("Execution time (Add Blog) : {}ms", System.currentTimeMillis() - startTime);
return CompletableFuture.completedFuture(listResponse);
}
}
20 changes: 20 additions & 0 deletions src/main/java/com/bloggios/blog/service/SchedulerService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.bloggios.blog.service;

import com.bloggios.authenticationconfig.payload.AuthenticatedUser;
import com.bloggios.elasticsearch.configuration.payload.response.ListResponse;

import java.util.concurrent.CompletableFuture;

/**
* Owner - Rohit Parihar
* Author - rohit
* Project - blog-provider-application
* Package - com.bloggios.blog.service
* Created_on - August 30 - 2024
* Created_at - 00:49
*/

public interface SchedulerService {

CompletableFuture<ListResponse> getUserScheduler(AuthenticatedUser authenticatedUser);
}

0 comments on commit a357f18

Please sign in to comment.