tsk-58: Update names of Contact endpoint (#67)
Closes #58 Reviewed-on: phoenix/textsender-api#67 Co-authored-by: phoenix <kundeng00@pm.me> Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
@@ -16,6 +16,7 @@ type ContactStore interface {
|
||||
GetContactByPhone(ctx context.Context, phone string, userId uuid.UUID) (*contact.Contact, error)
|
||||
GetAllContacts(ctx context.Context) ([]*contact.Contact, error)
|
||||
ContactExists(ctx context.Context, phone string, userId uuid.UUID) (bool, error)
|
||||
UpdateNames(ctx context.Context, con *contact.Contact, firstname *string, lastname *string, nickname *string) (int64, error)
|
||||
}
|
||||
|
||||
type PGContactStore struct {
|
||||
@@ -110,3 +111,72 @@ func (s *PGContactStore) ContactExists(ctx context.Context, phone string, userId
|
||||
|
||||
return exists, nil
|
||||
}
|
||||
|
||||
func (s *PGContactStore) UpdateNames(ctx context.Context, con *contact.Contact, firstname *string, lastname *string, nickname *string) (int64, error) {
|
||||
if firstname == nil && lastname == nil && nickname == nil {
|
||||
return 0, fmt.Errorf("Names are nil")
|
||||
} else {
|
||||
if firstname != nil && lastname != nil && nickname != nil {
|
||||
query := "UPDATE contacts SET first_name = $1, last_name = $2, nickname = $3 WHERE id = $4"
|
||||
if affected, err := s.db.Exec(ctx, query, firstname, lastname, nickname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Firstname = firstname
|
||||
con.Lastname = lastname
|
||||
con.Nickname = nickname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
} else if firstname != nil && lastname != nil {
|
||||
query := "UPDATE contacts SET first_name = $1, last_name = $2 WHERE id = $3"
|
||||
if affected, err := s.db.Exec(ctx, query, firstname, lastname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Firstname = firstname
|
||||
con.Lastname = lastname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
} else if lastname != nil && nickname != nil {
|
||||
query := "UPDATE contacts SET last_name = $1, nickname = $2 WHERE id = $3"
|
||||
if affected, err := s.db.Exec(ctx, query, lastname, nickname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Lastname = lastname
|
||||
con.Nickname = nickname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
} else if nickname != nil && firstname != nil {
|
||||
query := "UPDATE contacts SET nickname = $1, firstname = $2 WHERE id = $3"
|
||||
if affected, err := s.db.Exec(ctx, query, nickname, firstname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Firstname = firstname
|
||||
con.Nickname = nickname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
} else if firstname != nil {
|
||||
query := "UPDATE contacts SET firstname = $1 WHERE id = $2"
|
||||
if affected, err := s.db.Exec(ctx, query, firstname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Firstname = firstname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
} else if lastname != nil {
|
||||
query := "UPDATE contacts SET lastname = $1 WHERE id = $2"
|
||||
if affected, err := s.db.Exec(ctx, query, lastname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Lastname = lastname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
} else {
|
||||
query := "UPDATE contacts SET nickname = $1 WHERE id = $2"
|
||||
if affected, err := s.db.Exec(ctx, query, nickname, con.Id); err != nil {
|
||||
return 0, err
|
||||
} else {
|
||||
con.Nickname = nickname
|
||||
return affected.RowsAffected(), nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package mock
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"git.kundeng.us/phoenix/textsender-models/tx0/contact"
|
||||
@@ -116,3 +117,30 @@ func (m *MockContactStore) ContactExists(ctx context.Context, phoneNumber string
|
||||
|
||||
return exists, nil
|
||||
}
|
||||
|
||||
func (m *MockContactStore) UpdateNames(ctx context.Context, con *contact.Contact, firstname *string, lastname *string, nickname *string) (int64, error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
if m.Error != nil {
|
||||
return 0, m.Error
|
||||
} else if firstname == nil && lastname == nil && nickname == nil {
|
||||
return 0, fmt.Errorf("Names are not provided")
|
||||
} else {
|
||||
if c, exists := m.Contacts[*con.Id]; !exists {
|
||||
return 0, fmt.Errorf("Contact does not exist")
|
||||
} else {
|
||||
if firstname != nil {
|
||||
c.Firstname = firstname
|
||||
}
|
||||
if lastname != nil {
|
||||
c.Lastname = lastname
|
||||
}
|
||||
if nickname != nil {
|
||||
c.Nickname = nickname
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user