Files
2025-05-10 14:35:26 +07:00

74 lines
1.8 KiB
Go

package mongo
import (
"api-poliklinik/pkg/models/mongo/relatedperson"
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"time"
)
func (s *DatabaseService) GetAllDataRelatedPerson(limit int64, skip int64) ([]*relatedperson.RelatedPerson, error) {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
findOptions := options.Find()
findOptions.SetLimit(limit)
findOptions.SetSkip(skip)
dataUser, err := s.DBMongo.Collection("relatedperson").Find(ctx, bson.D{}, findOptions)
if err != nil {
log.Println(err)
}
var users []*relatedperson.RelatedPerson
err = dataUser.All(ctx, &users)
if err != nil {
log.Println(err)
return nil, err
}
return users, nil
}
func (s *DatabaseService) InsertRelatedPerson(req *relatedperson.RelatedPerson) error {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
_, err := s.DBMongo.Collection("relatedperson").InsertOne(ctx, req)
if err != nil {
log.Println(err)
return err
}
return nil
}
func (s *DatabaseService) DeleteRelatedPerson(id string, req *relatedperson.DeletedataRelatedPerson) error {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
objectID, err := primitive.ObjectIDFromHex(id)
if err != nil {
log.Println("Invalid ID:", err)
return err
}
(*req).ID = ""
filter := bson.M{"_id": objectID}
update := bson.M{
"$set": bson.M{
"active": req.Active,
},
}
res, err := s.DBMongo.Collection("relatedperson").UpdateOne(ctx, filter, update)
if err != nil {
log.Println("Error updating document:", err)
return err
}
if res.MatchedCount == 0 {
return fmt.Errorf("no document found with id: %s", id)
}
return nil
}