package apartment_repository

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

type ApartmentRepository interface {
	Save(apartment *model.Apartment) error
	Find() ([]entity.Apartment, error)
	Get(id int64) (*entity.Apartment, error)
}

type repository struct {
	db *gorm.DB
}

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

func (r *repository) Get(id int64) (*entity.Apartment, error) {
	var apartment *entity.Apartment
	err := r.db.First(&apartment, id).Error
	return apartment, err
}

func (r *repository) Find() ([]entity.Apartment, error) {
	var apartments []entity.Apartment
	err := r.db.Find(&apartments).Error
	return apartments, err
}

func (r *repository) Save(apartment *model.Apartment) error {
	return r.db.Save(apartment).Error
}
