diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go index d5971436e0f029acc4218bbc5dd73ac80cd75442..2bdef4ac16218fb6244f0e30223df0beb729da67 100644 --- a/src/myaktion/service/campaign.go +++ b/src/myaktion/service/campaign.go @@ -1,8 +1,6 @@ package service import ( - "fmt" - log "github.com/sirupsen/logrus" "gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/db" @@ -31,14 +29,16 @@ func CreateCampaign(campaign *model.Campaign) error { } func GetCampaign(id uint) (*model.Campaign, error) { - if campaign, ok := campaignStore[id]; !ok { - log.Info("Campaign with ID %d not found.", id) - return nil, fmt.Errorf("campaign with id %d not found", id) - } else { - log.Infof("Successfully retrieved campaign with ID %v.", campaign.ID) - log.Tracef("Retrieved: ", *campaign) - return campaign, nil + var campaign model.Campaign + result := db.DB.Preload("Donations").First(&campaign, id) + if result.Error != nil { + log.Info("Campaign retrieving failed.") + return nil, result.Error } + log.Infof("Successfully retrieved campaign with ID %v.", campaign.ID) + log.Tracef("Retrieved: ", campaign) + + return &campaign, nil } func GetCampaigns() ([]model.Campaign, error) { @@ -54,25 +54,30 @@ func GetCampaigns() ([]model.Campaign, error) { } func UpdateCampaign(id uint, campaign *model.Campaign) (*model.Campaign, error) { - if storeCampaign, ok := campaignStore[id]; !ok { - log.Info("Campaign with ID %d not found.", id) - return nil, fmt.Errorf("campaign with id %d not found", id) - } else { - *storeCampaign = *campaign - storeCampaign.ID = id - log.Infof("Successfully updated campaign with ID %d.", id) - log.Tracef("Updated: %v", storeCampaign) - return storeCampaign, nil + var campaignData model.Campaign + result := db.DB.Preload("Donations").First(&campaignData, id) + if result.Error != nil { + log.Info("Campaign retrieving failed.") + return nil, result.Error + } + result = db.DB.Model(&campaignData).Updates(&campaign) + if result.Error != nil { + log.Info("Campaign updating failed.") + return nil, result.Error } + log.Infof("Successfully updated campaign with ID %d.", id) + log.Tracef("Updated: %v", campaignData) + + return &campaignData, nil } func DeleteCampaign(id uint) error { - if campaign, ok := campaignStore[id]; !ok { - log.Info("Campaign with ID %d not found.", id) - return fmt.Errorf("campaign with id %d not found", id) - } else { - delete(campaignStore, id) - log.Infof("Successfully deleted campaign with ID %v.", campaign.ID) - return nil + result := db.DB.Preload("Donations").Delete(&model.Campaign{}, id) + if result.Error != nil { + log.Info("Campaign delete failed.") + return result.Error } + + log.Infof("Successfully deleted campaign with ID %v.", id) + return nil } diff --git a/src/myaktion/service/donation.go b/src/myaktion/service/donation.go index 5a7bb0978290c0977975470f64f818a8348a8843..bb438f2810bca595f6ecf4e82a6aee74fd636ac9 100644 --- a/src/myaktion/service/donation.go +++ b/src/myaktion/service/donation.go @@ -1,22 +1,20 @@ package service import ( - "fmt" - log "github.com/sirupsen/logrus" + "gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/db" "gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/model" ) func AddDonation(campaignId uint, donation *model.Donation) error { - campaign, err := GetCampaign(campaignId) - if err != nil { - log.Info("Campaign with ID %d not found.", campaignId) - return fmt.Errorf("campaign with id %d not found", campaignId) - } - if campaign.Donations == nil { - campaign.Donations = []model.Donation{} + donation.CampaignID = campaignId + result := db.DB.Create(donation) + if result.Error != nil { + log.Info("Donation creation failed.") + return result.Error } - campaign.Donations = append(campaign.Donations, *donation) + log.Info("Successfully stored new donation") + log.Tracef("Stored: %v", donation) return nil }