first commit
This commit is contained in:
68
internal/repositories/token.go
Normal file
68
internal/repositories/token.go
Normal file
@ -0,0 +1,68 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
config "studioj/boilerplate_go/configs"
|
||||
"studioj/boilerplate_go/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(string, int64) (string, error)
|
||||
Find(string) (*models.Token, error)
|
||||
Create(*models.Token) (*models.Token, error)
|
||||
Update(*models.Token) (*models.Token, error)
|
||||
Delete(string) error
|
||||
}
|
||||
|
||||
func (s *tokenRepository) Generate(sub string, expire_at int64) (string, error) {
|
||||
claims := jwt.MapClaims{}
|
||||
claims["authorized"] = true
|
||||
claims["sub"] = sub
|
||||
claims["exp"] = expire_at
|
||||
at := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
||||
token, err := at.SignedString([]byte(config.SECRET_KEY))
|
||||
|
||||
return token, err
|
||||
}
|
||||
|
||||
func (r *tokenRepository) Find(id string) (*models.Token, error) {
|
||||
var token *models.Token
|
||||
err := r.DB.Where("id = ?", id).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
|
||||
}
|
68
internal/repositories/user.go
Normal file
68
internal/repositories/user.go
Normal file
@ -0,0 +1,68 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"studioj/boilerplate_go/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() (*[]models.User, error)
|
||||
FindByID(string) (*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() (*[]models.User, error) {
|
||||
var users *[]models.User
|
||||
err := r.DB.Find(&users).Error
|
||||
return users, err
|
||||
}
|
||||
|
||||
func (r *userRepository) FindByID(id string) (*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("username = ?", 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
|
||||
}
|
Reference in New Issue
Block a user