2023-09-08 16:57:44 +02:00
|
|
|
package database
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
2023-09-12 17:30:43 +02:00
|
|
|
|
2023-09-08 16:57:44 +02:00
|
|
|
"github.com/ddworken/hishtory/shared"
|
|
|
|
)
|
|
|
|
|
2023-09-12 17:30:43 +02:00
|
|
|
func (db *DB) CountAllDevices(ctx context.Context) (int64, error) {
|
|
|
|
var numDevices int64 = 0
|
|
|
|
tx := db.WithContext(ctx).Model(&shared.Device{}).Count(&numDevices)
|
2023-09-08 16:57:44 +02:00
|
|
|
if tx.Error != nil {
|
|
|
|
return 0, fmt.Errorf("tx.Error: %w", tx.Error)
|
|
|
|
}
|
|
|
|
|
2023-09-12 17:30:43 +02:00
|
|
|
return numDevices, nil
|
2023-09-08 16:57:44 +02:00
|
|
|
}
|
|
|
|
|
2023-09-12 17:30:43 +02:00
|
|
|
func (db *DB) CountDevicesForUser(ctx context.Context, userID string) (int64, error) {
|
|
|
|
var existingDevicesCount int64
|
|
|
|
tx := db.WithContext(ctx).Model(&shared.Device{}).Where("user_id = ?", userID).Count(&existingDevicesCount)
|
2023-09-08 16:57:44 +02:00
|
|
|
if tx.Error != nil {
|
|
|
|
return 0, fmt.Errorf("tx.Error: %w", tx.Error)
|
|
|
|
}
|
|
|
|
|
2023-09-12 17:30:43 +02:00
|
|
|
return existingDevicesCount, nil
|
2023-09-08 16:57:44 +02:00
|
|
|
}
|
|
|
|
|
2023-09-12 17:30:43 +02:00
|
|
|
func (db *DB) CreateDevice(ctx context.Context, device *shared.Device) error {
|
2023-09-08 16:57:44 +02:00
|
|
|
tx := db.WithContext(ctx).Create(device)
|
|
|
|
if tx.Error != nil {
|
|
|
|
return fmt.Errorf("tx.Error: %w", tx.Error)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (db *DB) DevicesForUser(ctx context.Context, userID string) ([]*shared.Device, error) {
|
|
|
|
var devices []*shared.Device
|
|
|
|
tx := db.WithContext(ctx).Where("user_id = ?", userID).Find(&devices)
|
|
|
|
if tx.Error != nil {
|
|
|
|
return nil, fmt.Errorf("tx.Error: %w", tx.Error)
|
|
|
|
}
|
|
|
|
|
|
|
|
return devices, nil
|
|
|
|
}
|