- Add MyBatis Spring Boot Starter with XML mappers and domain classes - Create 9 mapper interfaces + XML: Restaurant, Video, Channel, Review, User, Stats, DaemonConfig, Search, Vector - Create 10 domain classes with Lombok: Restaurant, VideoSummary, VideoDetail, VideoRestaurantLink, Channel, Review, UserInfo, DaemonConfig, SiteVisitStats, VectorSearchResult - Create 7 new service classes: RestaurantService, VideoService, ChannelService, ReviewService, UserService, StatsService, DaemonConfigService - Refactor all controllers to be thin (HTTP + auth only), delegating business logic to services - Refactor SearchService, PipelineService, DaemonScheduler, AuthService, YouTubeService to use mappers/services instead of JDBC/repositories - Add Jackson SNAKE_CASE property naming for consistent API responses - Add ClobTypeHandler for Oracle CLOB→String in MyBatis - Add IdGenerator utility for centralized UUID generation - Delete old repository/ package (6 files), JdbcConfig, LowerCaseKeyAdvice - VectorService retains JDBC for Oracle VECTOR type support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
30 lines
687 B
Java
30 lines
687 B
Java
package com.tasteby.controller;
|
|
|
|
import com.tasteby.domain.SiteVisitStats;
|
|
import com.tasteby.service.StatsService;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/stats")
|
|
public class StatsController {
|
|
|
|
private final StatsService statsService;
|
|
|
|
public StatsController(StatsService statsService) {
|
|
this.statsService = statsService;
|
|
}
|
|
|
|
@PostMapping("/visit")
|
|
public Map<String, Object> recordVisit() {
|
|
statsService.recordVisit();
|
|
return Map.of("ok", true);
|
|
}
|
|
|
|
@GetMapping("/visits")
|
|
public SiteVisitStats getVisits() {
|
|
return statsService.getVisits();
|
|
}
|
|
}
|