package initalize

import (
	"fusenapi/service/repositories"
	"fusenapi/utils/queue"

	"github.com/aws/aws-sdk-go/aws/session"
	"gorm.io/gorm"
)

type Repositories struct {
	ImageHandle     repositories.ImageHandle
	NewResource     repositories.Resource
	NewShoppingCart repositories.ShoppingCart
	NewOrder        repositories.Order
}

type NewAllRepositorieData struct {
	GormDB         *gorm.DB
	BLMServiceUrls []string
	AwsSession     *session.Session
	DelayQueue     *queue.DelayMessage
}

func NewAllRepositories(newData *NewAllRepositorieData) *Repositories {
	return &Repositories{
		ImageHandle:     repositories.NewImageHandle(newData.GormDB, newData.BLMServiceUrls, newData.AwsSession),
		NewShoppingCart: repositories.NewShoppingCart(newData.GormDB, newData.BLMServiceUrls, newData.AwsSession),
		NewResource:     repositories.NewResource(newData.GormDB, newData.BLMServiceUrls, newData.AwsSession),
		NewOrder:        repositories.NewOrder(newData.GormDB, newData.AwsSession, newData.DelayQueue),
	}
}