forked from ebhomengo/niki
48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
package service
|
|
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// --- Type Aliases ---
|
|
|
|
// UserID is a type alias for clarity, representing foreign keys to the User service
|
|
type UserID uint32
|
|
|
|
// TransactionID is a type alias for clarity, representing foreign keys to the Transaction service
|
|
type TransactionID uint32
|
|
|
|
// CampaignID is a type alias for clarity, representing primary keys for Campaigns
|
|
type CampaignID uint32
|
|
|
|
// DonationID is a type alias for clarity, representing primary keys for Donations
|
|
type DonationID uint32
|
|
|
|
// --- Campaign Module Entities ---
|
|
|
|
// CampaignStatus represents the possible states of a campaign
|
|
type CampaignStatus string
|
|
|
|
const (
|
|
StatusActive CampaignStatus = "active"
|
|
StatusCompleted CampaignStatus = "completed"
|
|
StatusCancelled CampaignStatus = "cancelled"
|
|
StatusExpired CampaignStatus = "expired" // New status for deadlines
|
|
)
|
|
|
|
// Campaign represents a fundraising campaign entity
|
|
type Campaign struct {
|
|
ID CampaignID `json:"id"`
|
|
Title string `json:"title"`
|
|
Description string `json:"description"`
|
|
GoalAmount float64 `json:"goal_amount"` // Using float64 for decimal, consider using a dedicated decimal type for precision
|
|
RaisedAmount float64 `json:"raised_amount"`
|
|
Status CampaignStatus `json:"status"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
DeadlineAt *time.Time `json:"deadline_at,omitempty"` // Pointer to time.Time, allows nil for no deadline. omitempty hides if nil.
|
|
AdminID UserID `json:"admin_id"` // Foreign Key to User service
|
|
InitiatedByUserID *UserID `json:"initiated_by_user_id,omitempty"` // Pointer to UserID, allows nil. omitempty hides if nil.
|
|
}
|
|
|