backend-service/internal/repositories/interfaces.go

45 lines
1.3 KiB
Go
Raw Normal View History

package repositories
import (
"time"
"attune-heart-therapy/internal/models"
)
// UserRepository handles user data persistence
type UserRepository interface {
Create(user *models.User) error
GetByID(id uint) (*models.User, error)
GetByEmail(email string) (*models.User, error)
Update(user *models.User) error
GetActiveUsersCount() (int64, error)
}
// BookingRepository handles booking data persistence
type BookingRepository interface {
Create(booking *models.Booking) error
GetByID(id uint) (*models.Booking, error)
GetByUserID(userID uint) ([]models.Booking, error)
Update(booking *models.Booking) error
Delete(id uint) error
GetUpcomingBookings() ([]models.Booking, error)
}
// ScheduleRepository handles schedule data persistence
type ScheduleRepository interface {
Create(schedule *models.Schedule) error
GetAvailable(date time.Time) ([]models.Schedule, error)
Update(schedule *models.Schedule) error
GetByID(id uint) (*models.Schedule, error)
IncrementBookedCount(scheduleID uint) error
DecrementBookedCount(scheduleID uint) error
}
// NotificationRepository handles notification data persistence
type NotificationRepository interface {
Create(notification *models.Notification) error
GetByID(id uint) (*models.Notification, error)
Update(notification *models.Notification) error
GetPendingNotifications() ([]models.Notification, error)
}