first commit
This commit is contained in:
		
							
								
								
									
										89
									
								
								internal/repositories/center.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								internal/repositories/center.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type centerRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewCenterRepository(db *gorm.DB) CenterRepository {
 | 
			
		||||
	return ¢erRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type CenterRepository interface {
 | 
			
		||||
	List(string, int, int) (*[]models.Center, error)
 | 
			
		||||
	Total(string) (int64, error)
 | 
			
		||||
	Find(int64) (*models.Center, error)
 | 
			
		||||
	FindByTitle(string) (*models.Center, error)
 | 
			
		||||
	Create(*models.Center) (*models.Center, error)
 | 
			
		||||
	Update(*models.Center) (*models.Center, error)
 | 
			
		||||
	Delete(int64) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) List(q string, page int, limit int) (*[]models.Center, error) {
 | 
			
		||||
	var centers *[]models.Center
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	fmt.Println("q", q)
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("center_title ASC").Where("center_title LIKE ? OR center_name LIKE ?", "%"+q+"%", "%"+q+"%").Find(¢ers).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("center_title ASC").Find(¢ers).Error
 | 
			
		||||
	}
 | 
			
		||||
	return centers, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) Total(q string) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Model(&models.Center{}).Where("center_title LIKE ? OR center_name LIKE ?", "%"+q+"%", "%"+q+"%").Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.Center{}).Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) Find(id int64) (*models.Center, error) {
 | 
			
		||||
	var center *models.Center
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(¢er).Error
 | 
			
		||||
	return center, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) FindByTitle(center_title string) (*models.Center, error) {
 | 
			
		||||
	var center *models.Center
 | 
			
		||||
	err := r.DB.Where("center_title = ?", center_title).First(¢er).Error
 | 
			
		||||
	return center, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) Create(center *models.Center) (*models.Center, error) {
 | 
			
		||||
	err := r.DB.Create(¢er).Error
 | 
			
		||||
	return center, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) Update(center *models.Center) (*models.Center, error) {
 | 
			
		||||
	var row *models.Center
 | 
			
		||||
	if err := r.DB.Where("id=?", center.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(¢er).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *centerRepository) Delete(id int64) error {
 | 
			
		||||
	var center *models.Center
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(¢er).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(¢er).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										81
									
								
								internal/repositories/quiz.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								internal/repositories/quiz.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type quizRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewQuizRepository(db *gorm.DB) QuizRepository {
 | 
			
		||||
	return &quizRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type QuizRepository interface {
 | 
			
		||||
	List(int64, int, int) (*[]models.Quiz, error)
 | 
			
		||||
	Total(int64) (int64, error)
 | 
			
		||||
 | 
			
		||||
	Find(int64) (*models.Quiz, error)
 | 
			
		||||
	Create(*models.Quiz) (*models.Quiz, error)
 | 
			
		||||
	Update(*models.Quiz) (*models.Quiz, error)
 | 
			
		||||
	Delete(int64) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizRepository) List(quiz_paper_id int64, page int, limit int) (*[]models.Quiz, error) {
 | 
			
		||||
	var quizzes *[]models.Quiz
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	if quiz_paper_id > 0 {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("vol_no ASC").Where("quiz_paper_id = ?", quiz_paper_id).Find(&quizzes).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Find(&quizzes).Error
 | 
			
		||||
	}
 | 
			
		||||
	return quizzes, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizRepository) Total(quiz_paper_id int64) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if quiz_paper_id > 0 {
 | 
			
		||||
		err = r.DB.Model(&models.Quiz{}).Where("quiz_paper_id = ?", quiz_paper_id).Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.Quiz{}).Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizRepository) Find(id int64) (*models.Quiz, error) {
 | 
			
		||||
	var quiz *models.Quiz
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&quiz).Error
 | 
			
		||||
	return quiz, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizRepository) Create(quiz *models.Quiz) (*models.Quiz, error) {
 | 
			
		||||
	err := r.DB.Create(&quiz).Error
 | 
			
		||||
	return quiz, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizRepository) Update(quiz *models.Quiz) (*models.Quiz, error) {
 | 
			
		||||
	var row *models.Quiz
 | 
			
		||||
	if err := r.DB.Where("id=?", quiz.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(&quiz).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizRepository) Delete(id int64) error {
 | 
			
		||||
	var quiz *models.Quiz
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&quiz).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(&quiz).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										90
									
								
								internal/repositories/quizpaper.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								internal/repositories/quizpaper.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type quizPaperRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewQuizPaperRepository(db *gorm.DB) QuizPaperRepository {
 | 
			
		||||
	return &quizPaperRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type QuizPaperRepository interface {
 | 
			
		||||
	List(string, string, int, int) (*[]models.QuizPaper, error)
 | 
			
		||||
	Total(string, string) (int64, error)
 | 
			
		||||
 | 
			
		||||
	Find(int64) (*models.QuizPaper, error)
 | 
			
		||||
	Create(*models.QuizPaper) (*models.QuizPaper, error)
 | 
			
		||||
	Update(*models.QuizPaper) (*models.QuizPaper, error)
 | 
			
		||||
	Delete(string) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizPaperRepository) List(q string, tag string, page int, limit int) (*[]models.QuizPaper, error) {
 | 
			
		||||
	var quizPapers *[]models.QuizPaper
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	fmt.Println("q", q)
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		fmt.Println(" 1 q", q)
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Where("title LIKE ? OR category LIKE ? OR tag LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Find(&quizPapers).Error
 | 
			
		||||
	} else if tag != "" {
 | 
			
		||||
		fmt.Println(" tag", tag)
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Where("tag LIKE ?", "%"+tag+"%").Find(&quizPapers).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		fmt.Println(" query")
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Find(&quizPapers).Error
 | 
			
		||||
	}
 | 
			
		||||
	return quizPapers, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizPaperRepository) Total(q string, tag string) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Model(&models.QuizPaper{}).Where("title LIKE ? OR category LIKE ? OR tag LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Count(&total).Error
 | 
			
		||||
	} else if tag != "" {
 | 
			
		||||
		err = r.DB.Model(&models.QuizPaper{}).Where("tag LIKE ?", "%"+tag+"%").Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.QuizPaper{}).Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizPaperRepository) Find(id int64) (*models.QuizPaper, error) {
 | 
			
		||||
	var quizPaper *models.QuizPaper
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&quizPaper).Error
 | 
			
		||||
	return quizPaper, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizPaperRepository) Create(quizPaper *models.QuizPaper) (*models.QuizPaper, error) {
 | 
			
		||||
	err := r.DB.Create(&quizPaper).Error
 | 
			
		||||
	return quizPaper, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizPaperRepository) Update(quizPaper *models.QuizPaper) (*models.QuizPaper, error) {
 | 
			
		||||
	var row *models.QuizPaper
 | 
			
		||||
	if err := r.DB.Where("id=?", quizPaper.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(&quizPaper).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *quizPaperRepository) Delete(id string) error {
 | 
			
		||||
	var quizPaper *models.QuizPaper
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&quizPaper).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(&quizPaper).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										79
									
								
								internal/repositories/token.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								internal/repositories/token.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	config "learnsteam/cslms-api/configs"
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang-jwt/jwt/v5"
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type tokenRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewTokenRepository(db *gorm.DB) TokenRepository {
 | 
			
		||||
	return &tokenRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type TokenRepository interface {
 | 
			
		||||
	Generate(int64, int64, string) (string, error)
 | 
			
		||||
	Find(int64) (*models.Token, error)
 | 
			
		||||
	FindByRefreshToken(int64, string) (*models.Token, error)
 | 
			
		||||
	Create(*models.Token) (*models.Token, error)
 | 
			
		||||
	Update(*models.Token) (*models.Token, error)
 | 
			
		||||
	Delete(string) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *tokenRepository) Generate(user_id int64, expire_at int64, role string) (string, error) {
 | 
			
		||||
	fmt.Println(user_id, role)
 | 
			
		||||
	claims := jwt.MapClaims{}
 | 
			
		||||
	claims["authorized"] = true
 | 
			
		||||
	claims["sub"] = user_id
 | 
			
		||||
	claims["exp"] = expire_at
 | 
			
		||||
	claims["role"] = role
 | 
			
		||||
	at := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
 | 
			
		||||
	token, err := at.SignedString([]byte(config.SECRET_KEY))
 | 
			
		||||
 | 
			
		||||
	fmt.Println(token)
 | 
			
		||||
	return token, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *tokenRepository) Find(id int64) (*models.Token, error) {
 | 
			
		||||
	var token *models.Token
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&token).Error
 | 
			
		||||
	return token, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *tokenRepository) FindByRefreshToken(user_id int64, refreshToken string) (*models.Token, error) {
 | 
			
		||||
	var token *models.Token
 | 
			
		||||
	err := r.DB.Where("user_id = ? AND refresh_token = ?", user_id, refreshToken).First(&token).Error
 | 
			
		||||
	return token, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *tokenRepository) Create(token *models.Token) (*models.Token, error) {
 | 
			
		||||
	err := r.DB.Create(&token).Error
 | 
			
		||||
	return token, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *tokenRepository) Update(token *models.Token) (*models.Token, error) {
 | 
			
		||||
	var row *models.Token
 | 
			
		||||
	if err := r.DB.Where("id=?", token.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(&token).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *tokenRepository) Delete(id string) error {
 | 
			
		||||
	var token *models.Token
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&token).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(&token).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										90
									
								
								internal/repositories/user.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								internal/repositories/user.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type userRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewUserRepository(db *gorm.DB) UserRepository {
 | 
			
		||||
	return &userRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserRepository interface {
 | 
			
		||||
	List(string, int, int) (*[]models.User, error)
 | 
			
		||||
	Total(string) (int64, error)
 | 
			
		||||
	Find(int64) (*models.User, error)
 | 
			
		||||
	FindByUsername(string) (*models.User, error)
 | 
			
		||||
	Create(*models.User) (*models.User, error)
 | 
			
		||||
	Update(*models.User) (*models.User, error)
 | 
			
		||||
	Delete(string) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) List(q string, page int, limit int) (*[]models.User, error) {
 | 
			
		||||
	var users *[]models.User
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	fmt.Println("q", q)
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("last_name ASC, first_name ASC").Where("user_role = ?", "member").Where("name LIKE ? OR user_name LIKE ?", "%"+q+"%", "%"+q+"%").Find(&users).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		fmt.Println(" query")
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("last_name ASC, first_name ASC").Where("user_role = ?", "member").Find(&users).Error
 | 
			
		||||
	}
 | 
			
		||||
	return users, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) Total(q string) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Model(&models.User{}).Where("user_role = ?", "member").Where("name LIKE ? OR user_name LIKE ?", "%"+q+"%", "%"+q+"%").Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.User{}).Where("user_role = ?", "member").Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) Find(id int64) (*models.User, error) {
 | 
			
		||||
	var user *models.User
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&user).Error
 | 
			
		||||
	return user, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) FindByUsername(username string) (*models.User, error) {
 | 
			
		||||
	var user *models.User
 | 
			
		||||
	err := r.DB.Where("user_name = ?", username).First(&user).Error
 | 
			
		||||
	return user, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) Create(user *models.User) (*models.User, error) {
 | 
			
		||||
	err := r.DB.Create(&user).Error
 | 
			
		||||
	return user, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) Update(user *models.User) (*models.User, error) {
 | 
			
		||||
	var row *models.User
 | 
			
		||||
	if err := r.DB.Where("id=?", user.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(&user).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userRepository) Delete(id string) error {
 | 
			
		||||
	var user *models.User
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&user).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(&user).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										89
									
								
								internal/repositories/userquiz.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								internal/repositories/userquiz.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type userQuizRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewUserQuizRepository(db *gorm.DB) UserQuizRepository {
 | 
			
		||||
	return &userQuizRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserQuizRepository interface {
 | 
			
		||||
	List(int64, int, int) (*[]models.UserQuiz, error)
 | 
			
		||||
	Total(int64) (int64, error)
 | 
			
		||||
 | 
			
		||||
	Find(int64) (*models.UserQuiz, error)
 | 
			
		||||
	Create(*models.UserQuiz) (*models.UserQuiz, error)
 | 
			
		||||
	Insert([]models.UserQuiz) ([]models.UserQuiz, error)
 | 
			
		||||
	Update(*models.UserQuiz) (*models.UserQuiz, error)
 | 
			
		||||
	Delete(int64) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) List(user_quiz_paper_id int64, page int, limit int) (*[]models.UserQuiz, error) {
 | 
			
		||||
	var rows *[]models.UserQuiz
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	if user_quiz_paper_id > 0 {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("vol_no ASC").Where("user_quiz_paper_id = ?", user_quiz_paper_id).Find(&rows).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Find(&rows).Error
 | 
			
		||||
	}
 | 
			
		||||
	return rows, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) Total(user_quiz_paper_id int64) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if user_quiz_paper_id > 0 {
 | 
			
		||||
		err = r.DB.Model(&models.UserQuiz{}).Where("user_quiz_paper_id = ?", user_quiz_paper_id).Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.UserQuiz{}).Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) Find(id int64) (*models.UserQuiz, error) {
 | 
			
		||||
	var row *models.UserQuiz
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&row).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) Create(row *models.UserQuiz) (*models.UserQuiz, error) {
 | 
			
		||||
	err := r.DB.Create(&row).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) Insert(items []models.UserQuiz) ([]models.UserQuiz, error) {
 | 
			
		||||
	fmt.Println(items)
 | 
			
		||||
	err := r.DB.Create(&items).Error
 | 
			
		||||
	return items, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) Update(quiz *models.UserQuiz) (*models.UserQuiz, error) {
 | 
			
		||||
	var row *models.UserQuiz
 | 
			
		||||
	if err := r.DB.Where("id=?", quiz.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(&quiz).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizRepository) Delete(id int64) error {
 | 
			
		||||
	var row *models.UserQuiz
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&row).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(&row).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										87
									
								
								internal/repositories/userquizpaper.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								internal/repositories/userquizpaper.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
			
		||||
package repositories
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"learnsteam/cslms-api/internal/models"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type userQuizPaperRepository struct {
 | 
			
		||||
	DB *gorm.DB
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewUserQuizPaperRepository(db *gorm.DB) UserQuizPaperRepository {
 | 
			
		||||
	return &userQuizPaperRepository{
 | 
			
		||||
		DB: db,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserQuizPaperRepository interface {
 | 
			
		||||
	List(string, int, int) (*[]models.UserQuizPaper, error)
 | 
			
		||||
	Total(string) (int64, error)
 | 
			
		||||
 | 
			
		||||
	Find(int64) (*models.UserQuizPaper, error)
 | 
			
		||||
	Create(*models.UserQuizPaper) (*models.UserQuizPaper, error)
 | 
			
		||||
	Insert([]models.UserQuizPaper) ([]models.UserQuizPaper, error)
 | 
			
		||||
	Update(*models.UserQuizPaper) (*models.UserQuizPaper, error)
 | 
			
		||||
	Delete(string) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) List(q string, page int, limit int) (*[]models.UserQuizPaper, error) {
 | 
			
		||||
	var userQuizPapers *[]models.UserQuizPaper
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Where("subject LIKE ? OR program LIKE ? OR name LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Find(&userQuizPapers).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Find(&userQuizPapers).Error
 | 
			
		||||
	}
 | 
			
		||||
	return userQuizPapers, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Total(q string) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Model(&models.UserQuizPaper{}).Where("subject LIKE ? OR program LIKE ? OR name LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.UserQuizPaper{}).Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Find(id int64) (*models.UserQuizPaper, error) {
 | 
			
		||||
	var userQuizPaper *models.UserQuizPaper
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&userQuizPaper).Error
 | 
			
		||||
	return userQuizPaper, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Create(userQuizPaper *models.UserQuizPaper) (*models.UserQuizPaper, error) {
 | 
			
		||||
	err := r.DB.Create(&userQuizPaper).Error
 | 
			
		||||
	return userQuizPaper, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Insert(items []models.UserQuizPaper) ([]models.UserQuizPaper, error) {
 | 
			
		||||
	err := r.DB.Create(&items).Error
 | 
			
		||||
	return items, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Update(userQuizPaper *models.UserQuizPaper) (*models.UserQuizPaper, error) {
 | 
			
		||||
	var row *models.UserQuizPaper
 | 
			
		||||
	if err := r.DB.Where("id=?", userQuizPaper.ID).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.DB.Model(&row).Select("*").Updates(&userQuizPaper).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Delete(id string) error {
 | 
			
		||||
	var userQuizPaper *models.UserQuizPaper
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&userQuizPaper).Error; err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err := r.DB.Delete(&userQuizPaper).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user