Initial backend repository commit.
Set up project files and add .gitignore to exclude local build/runtime artifacts. Made-with: Cursor
This commit is contained in:
50
internal/repository/group_join_request_repo.go
Normal file
50
internal/repository/group_join_request_repo.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"carrot_bbs/internal/model"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type GroupJoinRequestRepository interface {
|
||||
Create(req *model.GroupJoinRequest) error
|
||||
GetByFlag(flag string) (*model.GroupJoinRequest, error)
|
||||
Update(req *model.GroupJoinRequest) error
|
||||
GetPendingByGroupAndTarget(groupID, targetUserID string, reqType model.GroupJoinRequestType) (*model.GroupJoinRequest, error)
|
||||
}
|
||||
|
||||
type groupJoinRequestRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewGroupJoinRequestRepository(db *gorm.DB) GroupJoinRequestRepository {
|
||||
return &groupJoinRequestRepository{db: db}
|
||||
}
|
||||
|
||||
func (r *groupJoinRequestRepository) Create(req *model.GroupJoinRequest) error {
|
||||
return r.db.Create(req).Error
|
||||
}
|
||||
|
||||
func (r *groupJoinRequestRepository) GetByFlag(flag string) (*model.GroupJoinRequest, error) {
|
||||
var req model.GroupJoinRequest
|
||||
if err := r.db.Where("flag = ?", flag).First(&req).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &req, nil
|
||||
}
|
||||
|
||||
func (r *groupJoinRequestRepository) Update(req *model.GroupJoinRequest) error {
|
||||
return r.db.Save(req).Error
|
||||
}
|
||||
|
||||
func (r *groupJoinRequestRepository) GetPendingByGroupAndTarget(groupID, targetUserID string, reqType model.GroupJoinRequestType) (*model.GroupJoinRequest, error) {
|
||||
var req model.GroupJoinRequest
|
||||
err := r.db.Where("group_id = ? AND target_user_id = ? AND request_type = ? AND status = ?",
|
||||
groupID, targetUserID, reqType, model.GroupJoinRequestStatusPending).
|
||||
Order("created_at DESC").
|
||||
First(&req).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &req, nil
|
||||
}
|
||||
Reference in New Issue
Block a user