1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package dbstore
- import (
- "context"
- "fmt"
- "git.linuxforward.com/byop/byop-engine/models"
- "gorm.io/gorm"
- )
- // CreateDeployment creates a new deployment using GORM
- func (s *SQLiteStore) CreateDeployment(ctx context.Context, deployment *models.Deployment) error {
- result := s.db.WithContext(ctx).Create(deployment)
- if result.Error != nil {
- return fmt.Errorf("failed to create deployment: %w", result.Error)
- }
- return nil
- }
- // GetDeploymentByID retrieves a deployment by ID using GORM
- func (s *SQLiteStore) GetDeploymentByID(ctx context.Context, id uint) (*models.Deployment, error) {
- var deployment models.Deployment
- result := s.db.WithContext(ctx).First(&deployment, id)
- if result.Error != nil {
- if result.Error == gorm.ErrRecordNotFound {
- return nil, models.NewErrNotFound(fmt.Sprintf("deployment with ID %d not found", id), result.Error)
- }
- return nil, fmt.Errorf("failed to get deployment by ID: %w", result.Error)
- }
- return &deployment, nil
- }
- // GetDeploymentsByClientID retrieves all deployments for a specific client using GORM
- func (s *SQLiteStore) GetDeploymentsByClientID(ctx context.Context, clientID uint) ([]*models.Deployment, error) {
- var deployments []*models.Deployment
- result := s.db.WithContext(ctx).Where("client_id = ?", clientID).Find(&deployments)
- if result.Error != nil {
- return nil, fmt.Errorf("failed to get deployments by client ID: %w", result.Error)
- }
- return deployments, nil
- }
- // GetDeploymentsByAppID retrieves all deployments for a specific app using GORM
- func (s *SQLiteStore) GetDeploymentsByAppID(ctx context.Context, appID uint) ([]*models.Deployment, error) {
- var deployments []*models.Deployment
- result := s.db.WithContext(ctx).Where("app_id = ?", appID).Find(&deployments)
- if result.Error != nil {
- return nil, fmt.Errorf("failed to get deployments by app ID: %w", result.Error)
- }
- return deployments, nil
- }
- // GetAllDeployments retrieves all deployments using GORM
- func (s *SQLiteStore) GetAllDeployments(ctx context.Context) ([]*models.Deployment, error) {
- var deployments []*models.Deployment
- result := s.db.WithContext(ctx).Find(&deployments)
- if result.Error != nil {
- return nil, fmt.Errorf("failed to get all deployments: %w", result.Error)
- }
- return deployments, nil
- }
- // UpdateDeployment updates an existing deployment using GORM
- func (s *SQLiteStore) UpdateDeployment(ctx context.Context, deployment *models.Deployment) error {
- result := s.db.WithContext(ctx).Save(deployment)
- if result.Error != nil {
- return fmt.Errorf("failed to update deployment: %w", result.Error)
- }
- if result.RowsAffected == 0 {
- return models.NewErrNotFound(fmt.Sprintf("deployment with ID %d not found for update", deployment.ID), nil)
- }
- return nil
- }
- // DeleteDeployment deletes a deployment by ID using GORM
- func (s *SQLiteStore) DeleteDeployment(ctx context.Context, id uint) error {
- result := s.db.WithContext(ctx).Delete(&models.Deployment{}, id)
- if result.Error != nil {
- return fmt.Errorf("failed to delete deployment: %w", result.Error)
- }
- if result.RowsAffected == 0 {
- return models.NewErrNotFound(fmt.Sprintf("deployment with ID %d not found for deletion", id), nil)
- }
- return nil
- }
- // GetDeploymentsByUserID retrieves all deployments for a specific user via their apps using GORM
- func (s *SQLiteStore) GetDeploymentsByUserID(ctx context.Context, userID uint) ([]*models.Deployment, error) {
- var deployments []*models.Deployment
- result := s.db.WithContext(ctx).
- Joins("JOIN apps ON deployments.app_id = apps.id").
- Where("apps.user_id = ?", userID).
- Find(&deployments)
- if result.Error != nil {
- return nil, fmt.Errorf("failed to get deployments by user ID: %w", result.Error)
- }
- return deployments, nil
- }
|