Files

42 lines
1.1 KiB
Go
Raw Permalink Normal View History

package repository
import (
"context"
"with_you/internal/model"
"gorm.io/gorm"
)
type ExamRepository interface {
ListByUserAndSemester(userID, semester string) ([]*model.Exam, error)
DeleteByUserAndSemester(ctx context.Context, userID, semester string) error
BatchCreate(ctx context.Context, exams []*model.Exam) error
}
type examRepository struct {
db *gorm.DB
}
func NewExamRepository(db *gorm.DB) ExamRepository {
return &examRepository{db: db}
}
func (r *examRepository) ListByUserAndSemester(userID, semester string) ([]*model.Exam, error) {
var exams []*model.Exam
err := r.db.Where("user_id = ? AND semester = ?", userID, semester).
Order("created_at ASC").
Find(&exams).Error
return exams, err
}
func (r *examRepository) DeleteByUserAndSemester(ctx context.Context, userID, semester string) error {
return r.db.WithContext(ctx).
Where("user_id = ? AND semester = ?", userID, semester).
Delete(&model.Exam{}).Error
}
func (r *examRepository) BatchCreate(ctx context.Context, exams []*model.Exam) error {
return r.db.WithContext(ctx).CreateInBatches(exams, 100).Error
}