package store_repository

import (
	"chonho/internal/api-v1/entity"
	"chonho/pkg/model"
	"gorm.io/gorm"
)

type StoreRepository interface {
	FirstStore(filter StoreFilter) (*model.Store, error)
	FindStore(filter StoreFilter) ([]model.Store, error)
	FindStoreEntity(filter StoreFilter) ([]entity.Store, error)
	FindStorePayment(filter StoreFilter) ([]entity.StorePaymentInfo, error)

	SaveStore(store *model.Store) error
	UpdateStore(store *model.Store) error
	UpdateStoreRate(storeId int64) error
	UpdateStoreTotalProducts(storeId int64) error

	PushStoreToES(store *model.Store) error
}

type repository struct {
	db *gorm.DB
}

func NewStoreRepository(db *gorm.DB) *repository {
	return &repository{
		db: db,
	}
}

type StoreFilter struct {
	UserId       int64
	StoreId      int64
	CategoryId   int64
	ApartmentId  int64
	SearchString string
	SearchTerms  []string
	StoreIds     []int64
}
