feat: multi-user isolation and graceful shutdown
- Add chat_id to events, settings, and days_off for per-user data - Add proper graceful shutdown (signal handling, WaitGroup) - Separate polling and webhook modes with goroutine management - Add schema migration from single-user to multi-user schema - Refactor handlers with shared actionFunc pattern (msg + callback) - Fix schema path for Docker deployment (/app/db/schema.sql) - Remove emoji from output text for cleaner formatting
This commit is contained in:
@@ -9,7 +9,7 @@ import (
|
||||
"worktimeBot/internal/db"
|
||||
)
|
||||
|
||||
func GenerateMonthlyReport(store *db.Store, year int, month time.Month) ([]byte, error) {
|
||||
func GenerateMonthlyReport(store *db.Store, chatID int64, year int, month time.Month) ([]byte, error) {
|
||||
f := excelize.NewFile()
|
||||
defer f.Close()
|
||||
|
||||
@@ -59,7 +59,6 @@ func GenerateMonthlyReport(store *db.Store, year int, month time.Month) ([]byte,
|
||||
})
|
||||
|
||||
monthName := time.Date(year, month, 1, 0, 0, 0, 0, time.UTC).Format("January 2006")
|
||||
|
||||
f.SetCellValue(sheet, "A1", fmt.Sprintf("Work Time Report — %s", monthName))
|
||||
f.MergeCell(sheet, "A1", "E1")
|
||||
f.SetCellStyle(sheet, "A1", "E1", titleStyle)
|
||||
@@ -89,7 +88,7 @@ func GenerateMonthlyReport(store *db.Store, year int, month time.Month) ([]byte,
|
||||
for d := firstDay; !d.After(lastDay); d = d.AddDate(0, 0, 1) {
|
||||
dateStr := d.Format("2006-01-02")
|
||||
|
||||
isOff, err := store.IsDayOff(dateStr)
|
||||
isOff, err := store.IsDayOff(chatID, dateStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -97,7 +96,7 @@ func GenerateMonthlyReport(store *db.Store, year int, month time.Month) ([]byte,
|
||||
continue
|
||||
}
|
||||
|
||||
events, err := store.EventsForDay(dateStr)
|
||||
events, err := store.EventsForDay(chatID, dateStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user