new file: main_dc/yalarba/api_yal/internal/repository/account_repository.go
new file: main_dc/yalarba/api_yal/internal/repository/appeal_repository.go new file: main_dc/yalarba/api_yal/internal/repository/comment_repository.go new file: main_dc/yalarba/api_yal/internal/repository/feedback_repository.go new file: main_dc/yalarba/api_yal/internal/repository/object_repository.go new file: main_dc/yalarba/api_yal/internal/repository/rating_repository.go add repositoryes for models into yal db
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"api_yal/internal/models"
|
||||
)
|
||||
|
||||
// AccountRepository интерфейс для операций с моделью Account
|
||||
//go:generate mockgen -destination=mocks/account_repository.go -package=mocks . AccountRepository
|
||||
type AccountRepository interface {
|
||||
// Create создает новый аккаунт
|
||||
Create(account *models.Account) error
|
||||
|
||||
// GetByID возвращает аккаунт по ID
|
||||
GetByID(id uint) (*models.Account, error)
|
||||
|
||||
// GetByEmail возвращает аккаунт по email
|
||||
GetByEmail(email string) (*models.Account, error)
|
||||
|
||||
// Update обновляет существующий аккаунт
|
||||
Update(account *models.Account) error
|
||||
|
||||
// Delete помечает аккаунт как удаленный
|
||||
Delete(id uint) error
|
||||
|
||||
// List возвращает список аккаунтов с пагинацией
|
||||
List(offset, limit int) ([]models.Account, error)
|
||||
|
||||
// Count возвращает общее количество аккаунтов
|
||||
Count() (int64, error)
|
||||
|
||||
// Search находит аккаунты по email или полному имени
|
||||
Search(query string, offset, limit int) ([]models.Account, error)
|
||||
|
||||
// GetObjects возвращает все объекты, принадлежащие аккаунту
|
||||
GetObjects(accountID uint) ([]models.Object, error)
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"api_yal/internal/models"
|
||||
)
|
||||
|
||||
// AppealRepository интерфейс для операций с моделью Appeal
|
||||
//go:generate mockgen -destination=mocks/appeal_repository.go -package=mocks . AppealRepository
|
||||
type AppealRepository interface {
|
||||
// Create создает новое о��ращение
|
||||
Create(appeal *models.Appeal) error
|
||||
|
||||
// GetByID возвращает обращение по ID
|
||||
GetByID(id uint) (*models.Appeal, error)
|
||||
|
||||
// Update обновляет существующее обращение
|
||||
Update(appeal *models.Appeal) error
|
||||
|
||||
// Delete помечает обращение как удаленное
|
||||
Delete(id uint) error
|
||||
|
||||
// List возвращает список обращений с пагинацией
|
||||
List(offset, limit int) ([]models.Appeal, error)
|
||||
|
||||
// Count возвращает общее количество обращений
|
||||
Count() (int64, error)
|
||||
|
||||
// ListByStatus возвращает обращения по статусу
|
||||
ListByStatus(status models.AppealStatus, offset, limit int) ([]models.Appeal, error)
|
||||
|
||||
// ListByType возвращает обращения по типу
|
||||
ListByType(typeAppeal models.AppealType, offset, limit int) ([]models.Appeal, error)
|
||||
|
||||
// ListByPriority возвращает обращения по приоритету
|
||||
ListByPriority(priority models.AppealPriority, offset, limit int) ([]models.Appeal, error)
|
||||
|
||||
// Search находит обращения по заголовку или сообщению
|
||||
Search(query string, offset, limit int) ([]models.Appeal, error)
|
||||
|
||||
// GetAuthor возвращает автора обращения
|
||||
GetAuthor(appealID uint) (*models.Account, error)
|
||||
|
||||
// GetObject возвращает объект, связанный с обращением
|
||||
GetObject(appealID uint) (*models.Object, error)
|
||||
|
||||
// GetFeedback возвращает отзыв, связанный с обращением
|
||||
GetFeedback(appealID uint) (*models.Feedback, error)
|
||||
|
||||
// GetComment возвращает комментарий, связанный с обращением
|
||||
GetComment(appealID uint) (*models.Comment, error)
|
||||
|
||||
// AssignTo назначает ответственного за обработку обращения
|
||||
AssignTo(appealID uint, assignedToID *uint) error
|
||||
|
||||
// UpdateStatus обновляет статус обращения
|
||||
UpdateStatus(appealID uint, status models.AppealStatus) error
|
||||
|
||||
// CreateHistory создает запись в истории изменений статуса
|
||||
CreateHistory(history *models.AppealHistory) error
|
||||
|
||||
// ListHistory возвращает историю изменений статуса обращения
|
||||
ListHistory(appealID uint, offset, limit int) ([]models.AppealHistory, error)
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"api_yal/internal/models"
|
||||
)
|
||||
|
||||
// CommentRepository интерфейс для операций с моделью Comment
|
||||
//go:generate mockgen -destination=mocks/comment_repository.go -package=mocks . CommentRepository
|
||||
type CommentRepository interface {
|
||||
// Create создает новый комментарий
|
||||
Create(comment *models.Comment) error
|
||||
|
||||
// GetByID возвращает комментарий по ID
|
||||
GetByID(id uint) (*models.Comment, error)
|
||||
|
||||
// Update обновляет существующий комментарий
|
||||
Update(comment *models.Comment) error
|
||||
|
||||
// Delete помечает комментарий как удаленный
|
||||
Delete(id uint) error
|
||||
|
||||
// List возвращает список комментариев с пагинацией
|
||||
List(offset, limit int) ([]models.Comment, error)
|
||||
|
||||
// Count возвращает общее количество комментариев
|
||||
Count() (int64, error)
|
||||
|
||||
// ListByFeedback возвращает комментарии по отзыву
|
||||
ListByFeedback(feedbackID uint, offset, limit int) ([]models.Comment, error)
|
||||
|
||||
// ListByAuthor возвращает комментарии по автору
|
||||
ListByAuthor(authorID uint, offset, limit int) ([]models.Comment, error)
|
||||
|
||||
// ListReplies возвращает ответы на комментарий
|
||||
ListReplies(parentID uint, offset, limit int) ([]models.Comment, error)
|
||||
|
||||
// GetAuthor возвращает автора комментария
|
||||
GetAuthor(commentID uint) (*models.Account, error)
|
||||
|
||||
// GetFeedback возвращает отзыв, к которому относится комментарий
|
||||
GetFeedback(commentID uint) (*models.Feedback, error)
|
||||
|
||||
// GetParent возвращает родительский комментарий
|
||||
GetParent(commentID uint) (*models.Comment, error)
|
||||
|
||||
// GetRepliesCount возвращает количество ответов на комментарий
|
||||
GetRepliesCount(commentID uint) (int64, error)
|
||||
|
||||
// MarkAsEdited помечает комментарий как отредактированный
|
||||
MarkAsEdited(id uint) error
|
||||
|
||||
// ToggleVerification переключает статус верификации комментария
|
||||
ToggleVerification(id uint, verified bool) error
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"api_yal/internal/models"
|
||||
)
|
||||
|
||||
// FeedbackRepository интерфейс для операций с моделью Feedback
|
||||
//go:generate mockgen -destination=mocks/feedback_repository.go -package=mocks . FeedbackRepository
|
||||
type FeedbackRepository interface {
|
||||
// Create создает новый отзыв
|
||||
Create(feedback *models.Feedback) error
|
||||
|
||||
// GetByID возвращает отзыв по ID
|
||||
GetByID(id uint) (*models.Feedback, error)
|
||||
|
||||
// Update обновляет существующий отзыв
|
||||
Update(feedback *models.Feedback) error
|
||||
|
||||
// Delete помечает отзыв как удаленный
|
||||
Delete(id uint) error
|
||||
|
||||
// List возвращает список отзывов с пагинацией
|
||||
List(offset, limit int) ([]models.Feedback, error)
|
||||
|
||||
// Count возвращает общее количество отзывов
|
||||
Count() (int64, error)
|
||||
|
||||
// ListByOwner возвращает отзывы по владельцу
|
||||
ListByOwner(ownerID uint, offset, limit int) ([]models.Feedback, error)
|
||||
|
||||
// ListByObject возвращает отзывы по объекту
|
||||
ListByObject(objectID uint, offset, limit int) ([]models.Feedback, error)
|
||||
|
||||
// ListByPlatform возвращает отзывы по платформе
|
||||
ListByPlatform(platform models.PlatformType, offset, limit int) ([]models.Feedback, error)
|
||||
|
||||
// GetOwner возвращает владельца отзыва
|
||||
GetOwner(feedbackID uint) (*models.Account, error)
|
||||
|
||||
// GetObject возвращает объект, к которому относится отзыв
|
||||
GetObject(feedbackID uint) (*models.Object, error)
|
||||
|
||||
// GetComments возвращает комментарии к отзыву
|
||||
GetComments(feedbackID uint, offset, limit int) ([]models.Comment, error)
|
||||
|
||||
// GetCommentCount возвращает количество комментариев к отзыву
|
||||
GetCommentCount(feedbackID uint) (int, error)
|
||||
|
||||
// UpdateCommentCount обновляет количество комментариев у отзыва
|
||||
UpdateCommentCount(feedbackID uint, count int) error
|
||||
|
||||
// Search находит отзывы по тексту
|
||||
Search(query string, offset, limit int) ([]models.Feedback, error)
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"api_yal/internal/models"
|
||||
)
|
||||
|
||||
// ObjectRepository интерфейс для операций с моделью Object
|
||||
//go:generate mockgen -destination=mocks/object_repository.go -package=mocks . ObjectRepository
|
||||
type ObjectRepository interface {
|
||||
// Create создает новый объект
|
||||
Create(object *models.Object) error
|
||||
|
||||
// GetByID возвращает объект по ID
|
||||
GetByID(id uint) (*models.Object, error)
|
||||
|
||||
// Update обновляет существующий объект
|
||||
Update(object *models.Object) error
|
||||
|
||||
// Delete помечает объект как удаленный
|
||||
Delete(id uint) error
|
||||
|
||||
// List возвращает список объектов с пагинацией
|
||||
List(offset, limit int) ([]models.Object, error)
|
||||
|
||||
// Count возвращает общее количество объектов
|
||||
Count() (int64, error)
|
||||
|
||||
// ListByOwner возвращает объекты по владельцу
|
||||
ListByOwner(ownerID uint, offset, limit int) ([]models.Object, error)
|
||||
|
||||
// ListByType возвращает объекты по типу
|
||||
ListByType(objectType string, offset, limit int) ([]models.Object, error)
|
||||
|
||||
// ListByStatus возвращает объекты по статусу
|
||||
ListByStatus(isActive bool, offset, limit int) ([]models.Object, error)
|
||||
|
||||
// Search находит объекты по названию, типу или адресу
|
||||
Search(query string, offset, limit int) ([]models.Object, error)
|
||||
|
||||
// GetOwner возвращает владельца объекта
|
||||
GetOwner(objectID uint) (*models.Account, error)
|
||||
|
||||
// GetTouristRating возвращает туристический рейтинг объекта
|
||||
GetTouristRating(objectID uint) (*models.Rating, error)
|
||||
|
||||
// GetEntrepreneurRating возвращает рейтинг для предпринимателей
|
||||
GetEntrepreneurRating(objectID uint) (*models.Rating, error)
|
||||
|
||||
// GetRatings возвращает все рейтинги объекта
|
||||
GetRatings(objectID uint) ([]models.Rating, error)
|
||||
|
||||
// GetFeedbacks возвращает отзывы об объекте
|
||||
GetFeedbacks(objectID uint, offset, limit int) ([]models.Feedback, error)
|
||||
|
||||
// GetFeedbackCount возвращает количество отзывов об объекте
|
||||
GetFeedbackCount(objectID uint) (int, error)
|
||||
|
||||
// UpdateFeedbackCount обновляет количество отзывов у объекта
|
||||
UpdateFeedbackCount(objectID uint, count int) error
|
||||
|
||||
// ToggleVerification переключает статус верификации объекта
|
||||
ToggleVerification(id uint, verified bool) error
|
||||
|
||||
// GetNearby возвращает объекты в радиусе
|
||||
GetNearby(latitude, longitude, radius float64, offset, limit int) ([]models.Object, error)
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"api_yal/internal/models"
|
||||
)
|
||||
|
||||
// RatingRepository интерфейс для операций с моделью Rating
|
||||
//go:generate mockgen -destination=mocks/rating_repository.go -package=mocks . RatingRepository
|
||||
type RatingRepository interface {
|
||||
// Create создает новый рейтинг
|
||||
Create(rating *models.Rating) error
|
||||
|
||||
// GetByID возвращает рейтинг по ID
|
||||
GetByID(id uint) (*models.Rating, error)
|
||||
|
||||
// GetByObjectAndPlatform возвращает рейтинг объекта для конкретной платформы
|
||||
GetByObjectAndPlatform(objectID uint, platform models.PlatformType) (*models.Rating, error)
|
||||
|
||||
// Update обновляет существующий рейтинг
|
||||
Update(rating *models.Rating) error
|
||||
|
||||
// Delete удаляет рейтинг
|
||||
Delete(id uint) error
|
||||
|
||||
// List возвращает список рейтингов с пагинацией
|
||||
List(offset, limit int) ([]models.Rating, error)
|
||||
|
||||
// Count возвращает общее количество рейтингов
|
||||
Count() (int64, error)
|
||||
|
||||
// ListByObject возвращает все рейтинги объекта
|
||||
ListByObject(objectID uint) ([]models.Rating, error)
|
||||
|
||||
// ListByOwner возвращает рейтинги по владельцу
|
||||
ListByOwner(ownerID uint, offset, limit int) ([]models.Rating, error)
|
||||
|
||||
// ListByPlatform возвращает рейтинги по платформе
|
||||
ListByPlatform(platform models.PlatformType, offset, limit int) ([]models.Rating, error)
|
||||
|
||||
// GetObject возвращает объект, к которому относится рейтинг
|
||||
GetObject(ratingID uint) (*models.Object, error)
|
||||
|
||||
// GetVoteBreakdown возвращает детализацию голосов для рейтинга
|
||||
GetVoteBreakdown(ratingID uint) (*models.VoteBreakdown, error)
|
||||
|
||||
// UpdateVoteBreakdown обновляет детализацию голосов
|
||||
UpdateVoteBreakdown(breakdown *models.VoteBreakdown) error
|
||||
|
||||
// CreateRatingVote создает новый голос в рейтинге
|
||||
CreateRatingVote(vote *models.RatingVote) error
|
||||
|
||||
// GetRatingVote возвращает голос пользователя по цели и платформе
|
||||
GetRatingVote(targetID uint, voterID uint, platform models.PlatformType) (*models.RatingVote, error)
|
||||
|
||||
// UpdateRatingVote обновляет существующий голос
|
||||
UpdateRatingVote(vote *models.RatingVote) error
|
||||
|
||||
// DeleteRatingVote удаляет голос
|
||||
DeleteRatingVote(id uint) error
|
||||
|
||||
// CountVotesByTarget возвращает количество голосов по цели и платформе
|
||||
CountVotesByTarget(targetID uint, platform models.PlatformType) (int64, error)
|
||||
|
||||
// CalculateAverageScore рассчитывает средний балл на основе VoteBreakdown
|
||||
CalculateAverageScore(breakdown *models.VoteBreakdown) float64
|
||||
}
|
||||
Reference in New Issue
Block a user