Files
2025-07-01 12:42:28 +07:00

85 lines
2.1 KiB
Go

package mongo
import (
"api-poliklinik/pkg/models/mongo/practitioner"
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"time"
)
func (s *DatabaseService) GetAllPractitioner(limit int64, skip int64) ([]*practitioner.Practitioner, 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("practitioner").Find(ctx, bson.D{}, findOptions)
if err != nil {
log.Println(err)
}
var users []*practitioner.Practitioner
err = dataUser.All(ctx, &users)
if err != nil {
log.Println(err)
return nil, err
}
return users, nil
}
func (s *DatabaseService) GetDokterBySMF(display string, value string) ([]*practitioner.Practitioner, error) {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
filter := bson.M{
"extension": bson.M{
"$elemMatch": bson.M{
"extension.valueDisplay": display,
"extension.valueCode": value,
},
},
}
cursor, err := s.DBMongo.Collection("practitioner").Find(ctx, filter)
if err != nil {
log.Println(err)
return nil, err
}
defer cursor.Close(ctx)
var results []*practitioner.Practitioner
if err = cursor.All(ctx, &results); err != nil {
log.Println(err)
return nil, err
}
return results, nil
}
func (s *DatabaseService) GetDokterByid(id string) (*practitioner.Practitioner, error) {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
objectID, err := primitive.ObjectIDFromHex(id)
if err != nil {
return nil, fmt.Errorf("invalid ID format: %v", err)
}
filter := bson.M{
"_id": objectID,
}
var result practitioner.Practitioner
err = s.DBMongo.Collection("practitioner").FindOne(ctx, filter).Decode(&result)
if err != nil {
if err == mongo.ErrNoDocuments {
return nil, fmt.Errorf("dokter dengan ID %s tidak ditemukan", id)
}
return nil, err
}
return &result, nil
}