Files
spsays-bff/internal/model/short_url.go
T
2026-07-11 01:10:35 +05:30

34 lines
1.3 KiB
Go

package model
import "time"
// AdminShortURL is a row in the admin short-URL table (a projection of
// shortened_urls served only to admins).
type AdminShortURL struct {
ID int64 `json:"id"`
Code string `json:"code"`
LongURL string `json:"long_url"`
ContentType string `json:"content_type"`
ClickCount int64 `json:"click_count"`
HumanClickCount int64 `json:"human_click_count"`
Disabled bool `json:"disabled"`
CreatedAt time.Time `json:"created_at"`
}
// ShortURLRangeStat is the (created, clicks) pair for one time window.
type ShortURLRangeStat struct {
Created int64 `json:"created"` // short URLs created in the window
Clicks int64 `json:"clicks"` // clicks recorded in the window
}
// ShortURLStats is the admin dashboard's short-URL summary: fixed today/week/
// month windows, all-time totals, and an optional custom range.
type ShortURLStats struct {
Today ShortURLRangeStat `json:"today"`
Week ShortURLRangeStat `json:"week"`
Month ShortURLRangeStat `json:"month"`
TotalURLs int64 `json:"total_urls"`
TotalClicks int64 `json:"total_clicks"`
Range *ShortURLRangeStat `json:"range,omitempty"` // present only when from/to given
}