repository.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package interfaces
  2. import (
  3. "context"
  4. "github.com/dmitriygnatenko/internal/models"
  5. )
  6. type ArticleRepository 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. Delete(ctx context.Context, ID int) error
  15. }
  16. type TagRepository interface {
  17. GetAll(ctx context.Context) ([]models.Tag, error)
  18. GetAllUsed(ctx context.Context) ([]models.Tag, error)
  19. IsUsed(ctx context.Context, ID int) (bool, error)
  20. GetByArticleID(ctx context.Context, ID int) ([]models.Tag, error)
  21. GetByURL(ctx context.Context, tag string) (*models.Tag, error)
  22. GetByID(ctx context.Context, ID int) (*models.Tag, error)
  23. Add(ctx context.Context, m models.Tag) error
  24. Update(ctx context.Context, m models.Tag) error
  25. Delete(ctx context.Context, ID int) error
  26. }
  27. type ArticleTagRepository interface {
  28. Add(ctx context.Context, articleID int, tagIDs []int) error
  29. Delete(ctx context.Context, articleID int, tagIDs []int) error
  30. DeleteByArticleID(ctx context.Context, articleID int) error
  31. }