url-shortner/internal/model/url.go

49 lines
1.4 KiB
Go

package model
import "time"
type URL struct {
ID int64 `json:"id"`
ShortCode string `json:"short_code"`
OriginalURL string `json:"original"`
UserID string `json:"user_id"`
Clicks int64 `json:"clicks"`
IsActive bool `json:"is_active"`
CreatedAt int64 `json:"created_at"`
ExpiresAt int64 `json:"expires_at,omitempty"`
UpdatedAt int64 `json:"updated_at"`
}
type ClickLog struct {
ID int64 `json:"id"`
URLID string `json:"url_id"`
IPAddress string `json:"ip_address"`
UserAgent string `json:"user_agent"`
Referer string `json:"referer"`
ClickedAt time.Time `json:"clicked_at"`
}
type CreateURLRequest struct {
OriginalURL string `json:"original"`
CustomCode string `json:"custom_code,omitempty"`
ExpiryHours int `json:"expiry_hours,omitempty"`
}
type CreateURLResponse struct {
ShortCode string `json:"short_code" binding:"required"`
ShortURL string `json:"short_url"`
OriginalURL string `json:"original_url"`
ExpiresAt *time.Time `json:"expires_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type URLStats struct {
ShortCode string `json:"short_code"`
OriginalURL string `json:"original_url"`
Clicks int64 `json:"clicks"`
IsActive bool `json:"is_active"`
CreatedAt int64 `json:"created_at"`
ExpiresAt int64 `json:"expires_at,omitempty"`
RecentClick []ClickLog `json:"recent_click"`
}