96 lines
1.5 KiB
Go
96 lines
1.5 KiB
Go
|
|
package entity
|
||
|
|
|
||
|
|
import (
|
||
|
|
"furtuna-be/internal/constants/studio"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Studio struct {
|
||
|
|
ID int64
|
||
|
|
BranchId int64
|
||
|
|
Name string
|
||
|
|
Status studio.StudioStatus
|
||
|
|
Price float64
|
||
|
|
Metadata []byte `gorm:"type:jsonb"` // Use jsonb data type for JSON data
|
||
|
|
CreatedAt time.Time
|
||
|
|
UpdatedAt time.Time
|
||
|
|
CreatedBy int64
|
||
|
|
UpdatedBy int64
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *Studio) TableName() string {
|
||
|
|
return "studios"
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *Studio) NewStudiosDB() *StudioDB {
|
||
|
|
return &StudioDB{
|
||
|
|
Studio: *s,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
type StudioList []*StudioDB
|
||
|
|
|
||
|
|
type StudioDB struct {
|
||
|
|
Studio
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *StudioDB) ToStudio() *Studio {
|
||
|
|
return &Studio{
|
||
|
|
ID: s.ID,
|
||
|
|
BranchId: s.BranchId,
|
||
|
|
Name: s.Name,
|
||
|
|
Status: s.Status,
|
||
|
|
Price: s.Price,
|
||
|
|
Metadata: s.Metadata,
|
||
|
|
CreatedAt: s.CreatedAt,
|
||
|
|
UpdatedAt: s.UpdatedAt,
|
||
|
|
CreatedBy: s.CreatedBy,
|
||
|
|
UpdatedBy: s.UpdatedBy,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *StudioList) ToStudioList() []*Studio {
|
||
|
|
var studios []*Studio
|
||
|
|
for _, studio := range *s {
|
||
|
|
studios = append(studios, studio.ToStudio())
|
||
|
|
}
|
||
|
|
return studios
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *StudioDB) ToUpdatedStudio(updatedBy int64, req Studio) {
|
||
|
|
s.UpdatedBy = updatedBy
|
||
|
|
|
||
|
|
if req.BranchId != 0 {
|
||
|
|
s.BranchId = req.BranchId
|
||
|
|
}
|
||
|
|
|
||
|
|
if req.Name != "" {
|
||
|
|
s.Name = req.Name
|
||
|
|
}
|
||
|
|
|
||
|
|
if req.Status != "" {
|
||
|
|
s.Status = req.Status
|
||
|
|
}
|
||
|
|
|
||
|
|
if req.Price != 0 {
|
||
|
|
s.Price = req.Price
|
||
|
|
}
|
||
|
|
|
||
|
|
if req.Metadata != nil {
|
||
|
|
s.Metadata = req.Metadata
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *StudioDB) ToStudioDB() *StudioDB {
|
||
|
|
return s
|
||
|
|
}
|
||
|
|
|
||
|
|
type StudioSearch struct {
|
||
|
|
Id int64
|
||
|
|
Name string
|
||
|
|
Status studio.StudioStatus
|
||
|
|
BranchId int64
|
||
|
|
Limit int
|
||
|
|
Offset int
|
||
|
|
}
|