package database import ( "context" "fmt" "git.linuxforward.com/byom/byom-onboard/internal/common/errors" "git.linuxforward.com/byom/byom-onboard/internal/common/models" ) func (d *Database) AddVPS(vps *models.VPSInstance) error { return d.db.Create(vps).Error } func (d *Database) GetAvailableVPS(ctx context.Context, plan string) ([]models.VPSInstance, error) { var vps []models.VPSInstance result := d.db.WithContext(ctx). Where("plan = ? AND is_in_use = ?", plan, false). Find(&vps) if result.Error != nil { return nil, fmt.Errorf("failed to get available VPS: %w", result.Error) } if len(vps) == 0 { return nil, errors.ErrNoVPSAvailable } return vps, nil } func (d *Database) ListVPS() ([]models.VPSInstance, error) { var vps []models.VPSInstance rowzs := d.db.Find(&vps) if rowzs.Error != nil { return nil, rowzs.Error } return vps, nil } func (d *Database) AssignVPSToUser(vpsID uint, userID uint) error { return d.db.Model(&models.VPSInstance{}). Where("id = ?", vpsID). Updates(map[string]interface{}{ "is_in_use": true, "user_id": userID, }).Error } func (d *Database) UnassignVPS(vpsID uint) error { return d.db.Model(&models.VPSInstance{}). Where("id = ?", vpsID). Updates(map[string]interface{}{ "is_in_use": false, "user_id": nil, }).Error }