1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package dbstore
- import (
- "context"
- "fmt"
- "git.linuxforward.com/byop/byop-engine/models"
- "gorm.io/gorm"
- )
- // CreateClient creates a new client using GORM
- func (s *SQLiteStore) CreateClient(ctx context.Context, client *models.Client) error {
- result := s.db.WithContext(ctx).Create(client)
- if result.Error != nil {
- return fmt.Errorf("failed to create client: %w", result.Error)
- }
- return nil
- }
- // GetAllClients retrieves all clients using GORM
- func (s *SQLiteStore) GetAllClients(ctx context.Context) ([]*models.Client, error) {
- var clients []*models.Client
- result := s.db.WithContext(ctx).Find(&clients)
- if result.Error != nil {
- return nil, fmt.Errorf("failed to get all clients: %w", result.Error)
- }
- return clients, nil
- }
- // GetClientByID retrieves a client by ID using GORM
- func (s *SQLiteStore) GetClientByID(ctx context.Context, id uint) (*models.Client, error) {
- var client models.Client
- result := s.db.WithContext(ctx).First(&client, id)
- if result.Error != nil {
- if result.Error == gorm.ErrRecordNotFound {
- return nil, models.NewErrNotFound(fmt.Sprintf("client with ID %d not found", id), result.Error)
- }
- return nil, fmt.Errorf("failed to get client by ID: %w", result.Error)
- }
- return &client, nil
- }
- // UpdateClient updates an existing client using GORM
- func (s *SQLiteStore) UpdateClient(ctx context.Context, client *models.Client) error {
- result := s.db.WithContext(ctx).Save(client)
- if result.Error != nil {
- return fmt.Errorf("failed to update client: %w", result.Error)
- }
- if result.RowsAffected == 0 {
- return models.NewErrNotFound(fmt.Sprintf("client with ID %d not found for update", client.ID), nil)
- }
- return nil
- }
- // DeleteClient deletes a client by ID using GORM
- func (s *SQLiteStore) DeleteClient(ctx context.Context, id uint) error {
- result := s.db.WithContext(ctx).Delete(&models.Client{}, id)
- if result.Error != nil {
- return fmt.Errorf("failed to delete client: %w", result.Error)
- }
- if result.RowsAffected == 0 {
- return models.NewErrNotFound(fmt.Sprintf("client with ID %d not found for deletion", id), nil)
- }
- return nil
- }
|