ci: add lint, coverage check and proper deploy workflow #2

Merged
daniil merged 3 commits from dev into main 2026-03-26 18:34:37 +00:00
3 changed files with 21 additions and 11 deletions
Showing only changes of commit 901173a337 - Show all commits

View File

@@ -253,11 +253,21 @@ func (h *FinanceHandler) Analytics(w http.ResponseWriter, r *http.Request) {
if !ok {
return
}
months, _ := strconv.Atoi(r.URL.Query().Get("months"))
q := r.URL.Query()
months, _ := strconv.Atoi(q.Get("months"))
if months <= 0 {
months = 6
}
analytics, err := h.svc.GetAnalytics(userID, months)
now := time.Now()
month, _ := strconv.Atoi(q.Get("month"))
year, _ := strconv.Atoi(q.Get("year"))
if month <= 0 {
month = int(now.Month())
}
if year <= 0 {
year = now.Year()
}
analytics, err := h.svc.GetAnalytics(userID, months, month, year)
if err != nil {
writeError(w, "failed to get analytics", http.StatusInternalServerError)
return

View File

@@ -317,7 +317,7 @@ func (r *FinanceRepository) GetSummary(userID int64, month, year int) (*model.Fi
return summary, nil
}
func (r *FinanceRepository) GetAnalytics(userID int64, months int) (*model.FinanceAnalytics, error) {
func (r *FinanceRepository) GetAnalytics(userID int64, months, month, year int) (*model.FinanceAnalytics, error) {
analytics := &model.FinanceAnalytics{}
// Monthly trend
@@ -342,27 +342,27 @@ func (r *FinanceRepository) GetAnalytics(userID int64, months int) (*model.Finan
analytics.MonthlyTrend = []model.MonthlyTrend{}
}
// Avg daily expense for current month
now := time.Now()
// Avg daily expense for selected month
var totalExpense float64
var dayCount int
r.db.QueryRow(`SELECT COALESCE(SUM(amount),0), COUNT(DISTINCT date)
FROM finance_transactions WHERE user_id=$1 AND type='expense'
AND EXTRACT(MONTH FROM date)=$2 AND EXTRACT(YEAR FROM date)=$3`,
userID, int(now.Month()), now.Year()).Scan(&totalExpense, &dayCount)
userID, month, year).Scan(&totalExpense, &dayCount)
if dayCount > 0 {
analytics.AvgDailyExpense = totalExpense / float64(dayCount)
}
// Comparison with previous month
prevMonth := now.AddDate(0, -1, 0)
selectedMonth := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, time.UTC)
prevMonthTime := selectedMonth.AddDate(0, -1, 0)
var currentMonthExp, prevMonthExp float64
r.db.QueryRow(`SELECT COALESCE(SUM(amount),0) FROM finance_transactions WHERE user_id=$1 AND type='expense'
AND EXTRACT(MONTH FROM date)=$2 AND EXTRACT(YEAR FROM date)=$3`,
userID, int(now.Month()), now.Year()).Scan(&currentMonthExp)
userID, month, year).Scan(&currentMonthExp)
r.db.QueryRow(`SELECT COALESCE(SUM(amount),0) FROM finance_transactions WHERE user_id=$1 AND type='expense'
AND EXTRACT(MONTH FROM date)=$2 AND EXTRACT(YEAR FROM date)=$3`,
userID, int(prevMonth.Month()), prevMonth.Year()).Scan(&prevMonthExp)
userID, int(prevMonthTime.Month()), prevMonthTime.Year()).Scan(&prevMonthExp)
analytics.ComparisonPrevMonth = model.Comparison{
Current: currentMonthExp,

View File

@@ -162,6 +162,6 @@ func (s *FinanceService) GetSummary(userID int64, month, year int) (*model.Finan
return s.repo.GetSummary(userID, month, year)
}
func (s *FinanceService) GetAnalytics(userID int64, months int) (*model.FinanceAnalytics, error) {
return s.repo.GetAnalytics(userID, months)
func (s *FinanceService) GetAnalytics(userID int64, months, month, year int) (*model.FinanceAnalytics, error) {
return s.repo.GetAnalytics(userID, months, month, year)
}