package video import ( "context" "gorm.io/gorm" ) type CommentRepository struct { db *gorm.DB } func NewCommentRepository(db *gorm.DB) *CommentRepository { return &CommentRepository{db: db} } func (r *CommentRepository) CreateComment(ctx context.Context, comment *Comment) error { return r.db.WithContext(ctx).Create(comment).Error } func (r *CommentRepository) DeleteComment(ctx context.Context, comment *Comment) error { return r.db.WithContext(ctx).Delete(comment).Error } func (r *CommentRepository) GetAllComments(ctx context.Context, videoID uint) ([]Comment, error) { var comments []Comment err := r.db.WithContext(ctx). Where("video_id = ?", videoID). Order("created_at asc"). Limit(200). Find(&comments).Error return comments, err } func (r *CommentRepository) IsExist(ctx context.Context, id uint) (bool, error) { var comment Comment if err := r.db.WithContext(ctx).First(&comment, id).Error; err != nil { if err == gorm.ErrRecordNotFound { return false, nil } return false, err } return true, nil } func (r *CommentRepository) GetByID(ctx context.Context, id uint) (*Comment, error) { var comment Comment if err := r.db.WithContext(ctx).First(&comment, id).Error; err != nil { if err == gorm.ErrRecordNotFound { return nil, nil } return nil, err } return &comment, nil }