package entity import ( "time" ) type Partner struct { ID int64 Name string Status string Address string CreatedAt time.Time UpdatedAt time.Time DeletedAt *time.Time CreatedBy int64 UpdatedBy int64 } type PartnerSearch struct { Search string Name string Limit int Offset int } type PartnerList []*PartnerDB type PartnerDB struct { Partner } func (p *Partner) ToPartnerDB() *PartnerDB { return &PartnerDB{ Partner: *p, } } func (PartnerDB) TableName() string { return "partners" } func (e *PartnerDB) ToPartner() *Partner { return &Partner{ ID: e.ID, Name: e.Name, Status: e.Status, Address: e.Address, CreatedAt: e.CreatedAt, UpdatedAt: e.UpdatedAt, CreatedBy: e.CreatedBy, } } func (p *PartnerList) ToPartnerList() []*Partner { var partners []*Partner for _, partner := range *p { partners = append(partners, partner.ToPartner()) } return partners } func (o *PartnerDB) ToUpdatedPartner(updatedBy int64, req Partner) { o.UpdatedBy = updatedBy if req.Name != "" { o.Name = req.Name } if req.Status != "" { o.Status = req.Status } if req.Address != "" { o.Address = req.Address } } func (o *PartnerDB) SetDeleted(updatedBy int64) { currentTime := time.Now() o.DeletedAt = ¤tTime o.UpdatedBy = updatedBy }