49 lines
1.4 KiB
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"`
|
|
}
|