Changes between Version 4 and Version 5 of UseCaseImplementationsFinal


Ignore:
Timestamp:
10/19/24 15:16:21 (11 days ago)
Author:
223145
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementationsFinal

    v4 v5  
    5353}}}
    5454
    55 ** Во последниот слој се додава потребнит **
     55** Во последниот слој се додава целиот рецепт во база и се превзема неговото id. Тоа id после тоа се користи за да се додадат состојките во посебна релациона база. **
    5656
    5757{{{
     
    9191[[Image(cookCraft5.png, height=570, width=650)]]
    9292
     93** Листањето на сите апликации за нови рецепти се прави така што се прави GET барање до backend делот од апликацијата на патеката /admin/recipeapplications и како додатни параметри се праќаат page и size доколку администраторот претходно веќе започнал со листање на апликациите. Првото нешто што се прави во оваа функција е се иницијализира нова инстанца од интерфејсот Pageable и таа инстаца се праќа во тековната функција за да се превземат апликациите. Се превземаат рецептите преку query, се ставаат во листа и се праќаат назад до front-end делот од апликацијата. **
     94
     95{{{
     96@GetMapping("/admin/recipeapplications")
     97    public ResponseEntity<Page<RecipeApplicationDTO>> getRecipeApplication(
     98            @RequestParam(defaultValue = "0") int page,
     99            @RequestParam(defaultValue = "4") int size
     100    ) {
     101        Pageable pageable = PageRequest.of(page, size);
     102        Page<RecipeApplicationDTO> recipeApplications = recipeService.findAllRecipeApplications(pageable);
     103        return new ResponseEntity<>(recipeApplications, HttpStatus.OK);
     104    }
     105}}}
     106
     107** Истата инстанца од интерфејсот Pageable се препраќа до полседниот слој. **
     108
     109{{{
     110@Override
     111    public Page<RecipeApplicationDTO> findAllRecipeApplications(Pageable pageable) {
     112        return recipeDAO.findAllRecipeApplications(pageable);
     113    }
     114}}}
     115
     116** Во последниот дел се прави sql query за селектирање на рецепти со лимит и offset за да се усогласи со потребната страница која ја бара администраторот. Исто така претходно се превзема и целосниот број на апликации **
     117
     118{{{
     119@Override
     120    public Page<RecipeApplicationDTO> findAllRecipeApplications(Pageable pageable) {
     121        String sql = "SELECT ra.id AS recipe_id, ra.recipe_name, ra.description, ra.category, ra.origin, ra.meal_thumb, ra.video_url, " +
     122                "rai.ingredient, rai.dose " +
     123                "FROM recipe_application ra " +
     124                "LEFT JOIN recipe_application_ingredients rai ON ra.id = rai.recipe_id " +
     125                "ORDER BY ra.id " +
     126                "LIMIT ? OFFSET ?";
     127
     128        Integer count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM recipe_application", Integer.class);
     129
     130        RecipeApplicationRowMapper rowMapper = new RecipeApplicationRowMapper();
     131
     132        jdbcTemplate.query(sql, new Object[]{pageable.getPageSize(), pageable.getOffset()}, rowMapper);
     133
     134        RecipeApplicationDTO recipe = rowMapper.getFinalRecipe();
     135
     136        List<RecipeApplicationDTO> recipeApplications = new ArrayList<>();
     137        if (recipe != null) {
     138            recipeApplications.add(recipe);
     139        }
     140
     141        return new PageImpl<>(recipeApplications, pageable, count != null ? count : 0);
     142    }
     143}}}
     144
    93145== Најава преку Google
    94146