entity added for donate pr

This commit is contained in:
matina 2026-04-01 02:07:31 -07:00
parent af9918a0c8
commit c6210967af
3 changed files with 72 additions and 1 deletions

View File

@ -1 +0,0 @@
package service

View File

@ -0,0 +1,47 @@
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.
}

View File

@ -0,0 +1,25 @@
package service
// DonationLevel represents the level of a donation (e.g., Bronze, Silver, Gold)
type DonationLevel string
const (
DonationLevelBronze DonationLevel = "Bronze"
DonationLevelSilver DonationLevel = "Silver"
DonationLevelGold DonationLevel = "Gold"
)
// Donation represents a donation made to a campaign
type Donation struct {
ID DonationID `json:"id"`
UserID UserID `json:"user_id"` // Foreign Key to User service
CampaignID CampaignID `json:"campaign_id"` // Foreign Key to Campaign
Amount float64 `json:"amount"` // Using float64 for decimal, consider a dedicated decimal type
PointsEarned int `json:"points_earned"` // امتیازی که از این تراکنش خاص کسب شده
TransactionID TransactionID `json:"transaction_id"` // Foreign Key to Transaction service
CreatedAt time.Time `json:"created_at"`
DonationLevel *DonationLevel `json:"donation_level,omitempty"` // Pointer to DonationLevel, allows nil. omitempty hides if nil.
}