Files
api-poliklinik/pkg/database/mongo/practitioner.go
2025-05-15 13:45:45 +07:00

58 lines
1.4 KiB
Go

package mongo
import (
"api-poliklinik/pkg/models/mongo/practitioner"
"context"
"go.mongodb.org/mongo-driver/bson"
"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
}