source: backend/src/main/java/mk/finki/roomreservation/service/DashboardService.java@ 09e02d7

Last change on this file since 09e02d7 was 09e02d7, checked in by Nikola Sarafimov <sarafimov.nikola12345@…>, 3 days ago

Final room reservation system implementation

  • Property mode set to 100644
File size: 1.4 KB
Line 
1package mk.finki.roomreservation.service;
2
3import mk.finki.roomreservation.model.DashboardStats;
4import mk.finki.roomreservation.model.HealthStatus;
5import org.springframework.jdbc.core.JdbcTemplate;
6import org.springframework.stereotype.Service;
7
8@Service
9public class DashboardService {
10
11 private final JdbcTemplate jdbcTemplate;
12
13 public DashboardService(JdbcTemplate jdbcTemplate) {
14 this.jdbcTemplate = jdbcTemplate;
15 }
16
17 public HealthStatus health() {
18 Long roomCount = jdbcTemplate.queryForObject(
19 "SELECT COUNT(*) FROM project.rooms",
20 Long.class
21 );
22
23 return new HealthStatus(
24 "UP",
25 "PostgreSQL",
26 "project",
27 roomCount == null ? 0 : roomCount
28 );
29 }
30
31 public DashboardStats getDashboardStats() {
32 return new DashboardStats(
33 count("SELECT COUNT(*) FROM project.rooms"),
34 count("SELECT COUNT(*) FROM project.equipment"),
35 count("SELECT COUNT(*) FROM project.users"),
36 count("SELECT COUNT(*) FROM project.reservations WHERE status = 'pending'"),
37 count("SELECT COUNT(*) FROM project.reservations WHERE status = 'approved'")
38 );
39 }
40
41 private long count(String sql) {
42 Long value = jdbcTemplate.queryForObject(sql, Long.class);
43 return value == null ? 0 : value;
44 }
45}
Note: See TracBrowser for help on using the repository browser.