forked from ebhomengo/niki
36 lines
960 B
Go
36 lines
960 B
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
_ "fmt"
|
|
"git.gocasts.ir/ebhomengo/niki/domain/campaign/entity"
|
|
"git.gocasts.ir/ebhomengo/niki/types"
|
|
)
|
|
|
|
type CampaignFilterParam struct {
|
|
AdminID types.ID
|
|
Status string
|
|
//nil true false
|
|
IsArchived *bool
|
|
}
|
|
|
|
type CampaignStorage interface {
|
|
Create(ctx context.Context, c entity.Campaign) (types.ID, error) // باید ID برگرداند
|
|
Update(ctx context.Context, c entity.Campaign) error
|
|
FindByID(ctx context.Context, id types.ID) (entity.Campaign, error)
|
|
FindAll(ctx context.Context, filter CampaignFilterParam) ([]entity.Campaign, error)
|
|
Archive(ctx context.Context, id types.ID) error // instead Delete
|
|
TotalDonations(ctx context.Context, campaignID types.ID) (int64, error)
|
|
}
|
|
|
|
type CampaignService struct {
|
|
repo CampaignStorage
|
|
}
|
|
|
|
// NewCampaignService constructs a new CampaignService.
|
|
func NewCampaignService(storage CampaignStorage) *CampaignService {
|
|
return &CampaignService{
|
|
repo: storage,
|
|
}
|
|
}
|