repository.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. package interfaces
  2. import (
  3. "context"
  4. "github.com/dmitriygnatenko/internal/models"
  5. )
  6. type IArticleRepository interface {
  7. GetAll(ctx context.Context) ([]models.Article, error)
  8. GetAllPreview(ctx context.Context) ([]models.ArticlePreview, error)
  9. GetPreviewByTagID(ctx context.Context, tagID int) ([]models.ArticlePreview, error)
  10. GetByURL(ctx context.Context, url string) (*models.Article, error)
  11. GetByID(ctx context.Context, ID int) (*models.Article, error)
  12. Add(ctx context.Context, m models.Article) (int, error)
  13. Update(ctx context.Context, m models.Article) error
  14. }
  15. type ITagRepository interface {
  16. GetAll(ctx context.Context) ([]models.Tag, error)
  17. GetAllUsed(ctx context.Context) ([]models.Tag, error)
  18. IsUsed(ctx context.Context, ID int) (bool, error)
  19. GetByArticleID(ctx context.Context, ID int) ([]models.Tag, error)
  20. GetByURL(ctx context.Context, tag string) (*models.Tag, error)
  21. GetByID(ctx context.Context, ID int) (*models.Tag, error)
  22. Add(ctx context.Context, m models.Tag) error
  23. Update(ctx context.Context, m models.Tag) error
  24. Delete(ctx context.Context, ID int) error
  25. }
  26. type IArticleTagRepository interface {
  27. Add(ctx context.Context, articleID int, tagIDs []int) error
  28. Delete(ctx context.Context, articleID int, tagIDs []int) error
  29. }