repository.go 1.2 KB

123456789101112131415161718192021222324252627282930313233
  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. }
  14. type ITagRepository interface {
  15. GetAll(ctx context.Context) ([]models.Tag, error)
  16. GetAllUsed(ctx context.Context) ([]models.Tag, error)
  17. IsUsed(ctx context.Context, ID int) (bool, error)
  18. GetByArticleID(ctx context.Context, ID int) ([]models.Tag, error)
  19. GetByURL(ctx context.Context, tag string) (*models.Tag, error)
  20. GetByID(ctx context.Context, ID int) (*models.Tag, error)
  21. Add(ctx context.Context, m models.Tag) error
  22. Update(ctx context.Context, m models.Tag) error
  23. Delete(ctx context.Context, ID int) error
  24. }
  25. type IArticleTagRepository interface {
  26. Add(ctx context.Context, articleID int, tagIDs []int) error
  27. Delete(ctx context.Context, articleID int, tagIDs []int) error
  28. }