1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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
- }
|