refactoring
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"GoMembership/pkg/logger"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type Membership struct {
|
||||
ID uint `gorm:"primaryKey" json:"id"`
|
||||
UserID uint `gorm:"index" json:"user_id"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
StartDate time.Time `json:"start_date"`
|
||||
@@ -11,5 +18,41 @@ type Membership struct {
|
||||
SubscriptionModel SubscriptionModel `gorm:"foreignKey:SubscriptionModelID" json:"subscription_model"`
|
||||
SubscriptionModelID uint `json:"subsription_model_id"`
|
||||
ParentMembershipID uint `json:"parent_member_id" binding:"omitempty,omitnil,number"`
|
||||
ID uint `json:"id"`
|
||||
}
|
||||
|
||||
func (m *Membership) BeforeSave(tx *gorm.DB) error {
|
||||
m.SubscriptionModelID = m.SubscriptionModel.ID
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Membership) Create(db *gorm.DB) error {
|
||||
if err := db.Create(m).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Info.Printf("Membership created: %#v", m)
|
||||
|
||||
return db.Preload("SubscriptionModel").First(m, m.ID).Error // Refresh the user object with SubscriptionModel
|
||||
}
|
||||
|
||||
func (m *Membership) Update(db *gorm.DB) error {
|
||||
|
||||
return db.Transaction(func(tx *gorm.DB) error {
|
||||
// Check if the user exists in the database
|
||||
var existingMembership Membership
|
||||
|
||||
logger.Info.Printf("updating Membership: %#v", m)
|
||||
if err := tx.First(&existingMembership, m.ID).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := tx.Model(&existingMembership).Updates(m).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.First(m, m.ID).Error
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func (m *Membership) Delete(db *gorm.DB) error {
|
||||
return db.Delete(&m).Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user