clients.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package services
  2. import (
  3. "fmt"
  4. "git.linuxforward.com/byop/byop-engine/dbstore"
  5. "git.linuxforward.com/byop/byop-engine/models"
  6. )
  7. type ClientService struct {
  8. store *dbstore.ClientStore
  9. }
  10. // NewClientService creates a new ClientService
  11. func NewClientService(store *dbstore.ClientStore) *ClientService {
  12. return &ClientService{
  13. store: store,
  14. }
  15. }
  16. // CreateClient creates a new client
  17. func (s *ClientService) CreateClient(client *models.Client) error {
  18. if client.Name == "" {
  19. return fmt.Errorf("client name is required")
  20. }
  21. return s.store.Create(client)
  22. }
  23. // GetClient retrieves a client by ID
  24. func (s *ClientService) GetClient(id int64) (*models.Client, error) {
  25. client, err := s.store.GetByID(id)
  26. if err != nil {
  27. return nil, fmt.Errorf("failed to retrieve client: %w", err)
  28. }
  29. return client, nil
  30. }
  31. // UpdateClient updates an existing client
  32. func (s *ClientService) UpdateClient(client *models.Client) error {
  33. if client.ID == 0 {
  34. return fmt.Errorf("client ID is required for update")
  35. }
  36. return s.store.Update(client)
  37. }
  38. // DeleteClient deletes a client by ID
  39. func (s *ClientService) DeleteClient(id int64) error {
  40. return s.store.Delete(id)
  41. }
  42. // ListClients retrieves all clients with optional filtering
  43. func (s *ClientService) ListClients(filter map[string]interface{}) ([]*models.Client, error) {
  44. return s.store.List(filter)
  45. }