This commit is contained in:
koh
2025-04-12 15:25:34 +07:00
commit d83f6c1145
38 changed files with 2131 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package repositories
import "github.com/dungnt11/todoms_golang/internal/models"
// IUserRepository định nghĩa interface cho UserRepository
type IUserRepository interface {
Create(user *models.User) error
FindByID(id uint) (*models.User, error)
FindByUsername(username string) (*models.User, error)
Update(user *models.User) error
Delete(id uint) error
}
// IProductRepository định nghĩa interface cho ProductRepository
type IProductRepository interface {
Create(product *models.Product) error
FindByID(id uint) (*models.Product, error)
FindAll() ([]*models.Product, error)
Update(product *models.Product) error
Delete(id uint) error
}
// Các interface khác có thể được thêm vào đây khi cần thiết

View File

@@ -0,0 +1,53 @@
package repositories
import (
"github.com/dungnt11/todoms_golang/internal/models"
"gorm.io/gorm"
)
// ProductRepository triển khai IProductRepository
type ProductRepository struct {
db *gorm.DB
}
// NewProductRepository tạo một instance mới của ProductRepository
func NewProductRepository(db *gorm.DB) *ProductRepository {
return &ProductRepository{
db: db,
}
}
// Create tạo một sản phẩm mới
func (r *ProductRepository) Create(product *models.Product) error {
return r.db.Create(product).Error
}
// FindByID tìm sản phẩm theo ID
func (r *ProductRepository) FindByID(id uint) (*models.Product, error) {
var product models.Product
err := r.db.First(&product, id).Error
if err != nil {
return nil, err
}
return &product, nil
}
// FindAll lấy tất cả sản phẩm
func (r *ProductRepository) FindAll() ([]*models.Product, error) {
var products []*models.Product
err := r.db.Find(&products).Error
if err != nil {
return nil, err
}
return products, nil
}
// Update cập nhật thông tin sản phẩm
func (r *ProductRepository) Update(product *models.Product) error {
return r.db.Save(product).Error
}
// Delete xóa sản phẩm theo ID
func (r *ProductRepository) Delete(id uint) error {
return r.db.Delete(&models.Product{}, id).Error
}

View File

@@ -0,0 +1,53 @@
package repositories
import (
"github.com/dungnt11/todoms_golang/internal/models"
"gorm.io/gorm"
)
// UserRepository triển khai IUserRepository
type UserRepository struct {
db *gorm.DB
}
// NewUserRepository tạo một instance mới của UserRepository
func NewUserRepository(db *gorm.DB) *UserRepository {
return &UserRepository{
db: db,
}
}
// Create tạo một user mới trong database
func (ur *UserRepository) Create(user *models.User) error {
return ur.db.Create(user).Error
}
// FindByID tìm user theo ID
func (ur *UserRepository) FindByID(id uint) (*models.User, error) {
var user models.User
err := ur.db.First(&user, id).Error
if err != nil {
return nil, err
}
return &user, nil
}
// FindByUsername tìm user theo username
func (ur *UserRepository) FindByUsername(username string) (*models.User, error) {
var user models.User
err := ur.db.Where("username = ?", username).First(&user).Error
if err != nil {
return nil, err
}
return &user, nil
}
// Update cập nhật thông tin user
func (ur *UserRepository) Update(user *models.User) error {
return ur.db.Save(user).Error
}
// Delete xóa user theo ID
func (ur *UserRepository) Delete(id uint) error {
return ur.db.Delete(&models.User{}, id).Error
}