github.com/ngocphuongnb/tetua@v0.0.7-alpha/packages/entrepository/setting.go (about)

     1  package entrepository
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/ngocphuongnb/tetua/app/config"
     7  	"github.com/ngocphuongnb/tetua/app/entities"
     8  	"github.com/ngocphuongnb/tetua/app/logger"
     9  	"github.com/ngocphuongnb/tetua/packages/entrepository/ent"
    10  )
    11  
    12  type SettingRepository struct {
    13  	*Repository
    14  }
    15  
    16  func (ur *SettingRepository) All(ctx context.Context) []*config.SettingItem {
    17  	result := make([]*config.SettingItem, 0)
    18  	settings, err := ur.Client.Setting.Query().All(ctx)
    19  
    20  	if err != nil {
    21  		logger.Get().Error(err)
    22  		return result
    23  	}
    24  
    25  	for _, setting := range settings {
    26  		result = append(result, &config.SettingItem{
    27  			Name:  setting.Name,
    28  			Value: setting.Value,
    29  			Type:  "",
    30  		})
    31  	}
    32  
    33  	return result
    34  }
    35  
    36  func (ur *SettingRepository) Save(ctx context.Context, settings []*entities.Setting) error {
    37  	var builders []*ent.SettingCreate
    38  
    39  	for _, s := range settings {
    40  		us := ur.Client.Setting.
    41  			Create().
    42  			SetName(s.Name).
    43  			SetValue(s.Value).
    44  			SetType(s.Type)
    45  		builders = append(builders, us)
    46  	}
    47  
    48  	return ur.Client.Setting.
    49  		CreateBulk(builders...).
    50  		OnConflict().
    51  		UpdateNewValues().
    52  		Exec(ctx)
    53  }