Skip to content

Commit

Permalink
fixed error in id
Browse files Browse the repository at this point in the history
  • Loading branch information
Adi-Gupta018 committed Mar 20, 2024
1 parent d90b455 commit 70eab31
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 34 deletions.
10 changes: 7 additions & 3 deletions http/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"net/http"

"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson/primitive"

"github.com/Adi-Gupta018/react-mongo-crud-golang/model"
"github.com/Adi-Gupta018/react-mongo-crud-golang/repository"
Expand All @@ -24,7 +25,8 @@ func (s *Server) GetCitizen(ctx *gin.Context) {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "invalid argument id"})
return
}
citizen, err := s.repository.GetCitizen(ctx, id)
ObjectID, err := primitive.ObjectIDFromHex(id)
citizen, err := s.repository.GetCitizen(ctx, ObjectID)
if err != nil {
if errors.Is(err, repository.ErrCitizenNotFound) {
ctx.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
Expand Down Expand Up @@ -65,12 +67,13 @@ func (s *Server) UpdateCitizen(ctx *gin.Context) {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "invalid argument id"})
return
}
ObjectID, _ := primitive.ObjectIDFromHex(id)
var citizen model.Citizen
if err := ctx.ShouldBindJSON(&citizen); err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "invalid request body"})
return
}
citizen.ID = id
citizen.ID = ObjectID
citizen, err := s.repository.UpdateCitizen(ctx, citizen)
if err != nil {
if errors.Is(err, repository.ErrCitizenNotFound) {
Expand All @@ -89,7 +92,8 @@ func (s *Server) DeleteCitizen(ctx *gin.Context) {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "invalid argument id"})
return
}
if err := s.repository.DeleteCitizen(ctx, id); err != nil {
ObjectID, _ := primitive.ObjectIDFromHex(id)
if err := s.repository.DeleteCitizen(ctx, ObjectID); err != nil {
if errors.Is(err, repository.ErrCitizenNotFound) {
ctx.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
return
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func main() {
}

func db() *mongo.Client {
clientOptions := options.Client().ApplyURI("mongodb+srv://Demo03:[email protected]/citizen?retryWrites=true&w=majority ")
clientOptions := options.Client().ApplyURI("mongodb+srv://Demo03:[email protected]/?retryWrites=true&w=majority&appName=Demo")
// Connect to MongoDB
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
Expand Down
20 changes: 11 additions & 9 deletions model/user.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package model

import "go.mongodb.org/mongo-driver/bson/primitive"

type Citizen struct {
ID string `json:"id"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
DOB string `json:"dob"`
Gender string `json:"gender"`
Address string `json:"address"`
City string `json:"city"`
State string `json:"state"`
Pincode string `json:"pincode"`
ID primitive.ObjectID `json:"id" bson:"_id"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
DOB string `json:"dob"`
Gender string `json:"gender"`
Address string `json:"address"`
City string `json:"city"`
State string `json:"state"`
Pincode string `json:"pincode"`
}
5 changes: 3 additions & 2 deletions repository/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import (
"context"

"github.com/Adi-Gupta018/react-mongo-crud-golang/model"
"go.mongodb.org/mongo-driver/bson/primitive"
)

type Repository interface {
GetCitizen(ctx context.Context, id string) (model.Citizen, error)
GetCitizen(ctx context.Context, id primitive.ObjectID) (model.Citizen, error)
GetAllCitizens(ctx context.Context) ([]model.Citizen, error) // New function added
CreateCitizen(ctx context.Context, citizen model.Citizen) (model.Citizen, error)
UpdateCitizen(ctx context.Context, citizen model.Citizen) (model.Citizen, error)
DeleteCitizen(ctx context.Context, id string) error
DeleteCitizen(ctx context.Context, id primitive.ObjectID) error
}
27 changes: 8 additions & 19 deletions repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,11 @@ func NewRepository(db *mongo.Database) Repository {
return &repository{db: db}
}

func (r *repository) GetCitizen(ctx context.Context, id string) (model.Citizen, error) {
func (r *repository) GetCitizen(ctx context.Context, id primitive.ObjectID) (model.Citizen, error) {
var out model.Citizen
objectID, err := primitive.ObjectIDFromHex(id)
if err != nil {
return model.Citizen{}, err
}
err = r.db.
err := r.db.
Collection("citizens").
FindOne(ctx, bson.M{"_id": objectID}).
FindOne(ctx, bson.M{"_id": id}).
Decode(&out)
if err != nil {
if errors.Is(err, mongo.ErrNoDocuments) {
Expand Down Expand Up @@ -66,7 +62,7 @@ func (r *repository) GetAllCitizens(ctx context.Context) ([]model.Citizen, error
}

func (r *repository) CreateCitizen(ctx context.Context, citizen model.Citizen) (model.Citizen, error) {
citizen.ID = primitive.NewObjectID().Hex()
citizen.ID = primitive.NewObjectID()
_, err := r.db.
Collection("citizens").
InsertOne(ctx, citizen)
Expand All @@ -77,11 +73,8 @@ func (r *repository) CreateCitizen(ctx context.Context, citizen model.Citizen) (
}

func (r *repository) UpdateCitizen(ctx context.Context, citizen model.Citizen) (model.Citizen, error) {
objectID, err := primitive.ObjectIDFromHex(citizen.ID)
if err != nil {
return model.Citizen{}, err
}
_, err = r.db.
objectID := citizen.ID
_, err := r.db.
Collection("citizens").
UpdateOne(ctx, bson.M{"_id": objectID}, bson.M{"$set": citizen})
if err != nil {
Expand All @@ -90,14 +83,10 @@ func (r *repository) UpdateCitizen(ctx context.Context, citizen model.Citizen) (
return citizen, nil
}

func (r *repository) DeleteCitizen(ctx context.Context, id string) error {
objectID, err := primitive.ObjectIDFromHex(id)
if err != nil {
return err
}
func (r *repository) DeleteCitizen(ctx context.Context, id primitive.ObjectID) error {
result, err := r.db.
Collection("citizens").
DeleteOne(ctx, bson.M{"_id": objectID})
DeleteOne(ctx, bson.M{"_id": id})
if err != nil {
return err
}
Expand Down

0 comments on commit 70eab31

Please sign in to comment.