new revenue getters
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
||||
"Portifolio/internal/model"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
@@ -54,46 +53,3 @@ func InsertRevenue(db *sql.DB, companyID int, currencyID int, categoryName strin
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetRevenue(db *sql.DB, companyID int, periodType model.PeriodType, year, idx int) ([]model.Revenue, error) {
|
||||
rows, err := db.Query(`
|
||||
WITH RECURSIVE tree AS (
|
||||
SELECT id, name, parent_id
|
||||
FROM category
|
||||
WHERE company_id = ? AND parent_id IS NULL
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT c.id, c.name, c.parent_id
|
||||
FROM category c
|
||||
JOIN tree t ON c.parent_id = t.id
|
||||
)
|
||||
SELECT e.id, t.name, e.value,
|
||||
p.type, p.year, p.idx, p.start_date, p.end_date
|
||||
FROM revenue_entries e
|
||||
JOIN tree t ON e.category_id = t.id
|
||||
JOIN periods p ON e.period_id = p.id
|
||||
WHERE e.company_id = ? AND p.type = ? AND p.year = ? AND p.idx = ?`,
|
||||
companyID, companyID, string(periodType), year, idx,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("query revenue: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var entries []model.Revenue
|
||||
for rows.Next() {
|
||||
var e model.Revenue
|
||||
var p model.Period
|
||||
var start, end string
|
||||
if err := rows.Scan(&e.ID, &e.Category, &e.Value,
|
||||
&p.Type, &p.Year, &p.Index, &start, &end); err != nil {
|
||||
return nil, fmt.Errorf("scan revenue row: %w", err)
|
||||
}
|
||||
p.Start, _ = time.Parse("2006-01-02", start)
|
||||
p.End, _ = time.Parse("2006-01-02", end)
|
||||
e.Period = &p
|
||||
entries = append(entries, e)
|
||||
}
|
||||
return entries, rows.Err()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user