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