package repositories import ( "errors" "github.com/muety/wakapi/models" "gorm.io/gorm" ) type AliasRepository struct { db *gorm.DB } func NewAliasRepository(db *gorm.DB) *AliasRepository { return &AliasRepository{db: db} } func (r *AliasRepository) GetAll() ([]*models.Alias, error) { var aliases []*models.Alias if err := r.db.Find(&aliases).Error; err != nil { return nil, err } return aliases, nil } func (r *AliasRepository) GetByUser(userId string) ([]*models.Alias, error) { var aliases []*models.Alias if userId == "" { return aliases, nil } if err := r.db. Where(&models.Alias{UserID: userId}). Find(&aliases).Error; err != nil { return nil, err } return aliases, nil } func (r *AliasRepository) GetByUserAndKey(userId, key string) ([]*models.Alias, error) { var aliases []*models.Alias if userId == "" { return aliases, nil } if err := r.db. Where(&models.Alias{ UserID: userId, Key: key, }). Find(&aliases).Error; err != nil { return nil, err } return aliases, nil } func (r *AliasRepository) GetByUserAndKeyAndType(userId, key string, summaryType uint8) ([]*models.Alias, error) { var aliases []*models.Alias if userId == "" { return aliases, nil } if err := r.db. Where(&models.Alias{ UserID: userId, Key: key, Type: summaryType, }). Find(&aliases).Error; err != nil { return nil, err } return aliases, nil } func (r *AliasRepository) GetByUserAndTypeAndValue(userId string, summaryType uint8, value string) (*models.Alias, error) { alias := &models.Alias{} if userId == "" { return nil, errors.New("invalid input") } if err := r.db. Where(&models.Alias{ UserID: userId, Type: summaryType, Value: value, }). First(alias).Error; err != nil { return nil, err } return alias, nil } func (r *AliasRepository) Insert(alias *models.Alias) (*models.Alias, error) { if !alias.IsValid() { return nil, errors.New("invalid alias") } result := r.db.Create(alias) if err := result.Error; err != nil { return nil, err } return alias, nil } func (r *AliasRepository) Delete(id uint) error { return r.db. Where("id = ?", id). Delete(models.Alias{}).Error } func (r *AliasRepository) DeleteBatch(ids []uint) error { return r.db. Where("id IN ?", ids). Delete(models.Alias{}).Error }