ss-keel-mongo
ss-keel-mongo provides a generic Repository[T, ID] implementation backed by mongo-driver. Works with any BSON-serializable struct.
Implements: Repository[T, ID]
Planned Installation
Section titled “Planned Installation”go get github.com/slice-soft/ss-keel-mongoPlanned Usage
Section titled “Planned Usage”import "github.com/slice-soft/ss-keel-mongo"
// Connectclient, err := ssmongo.Connect(ssmongo.Config{ URI: os.Getenv("MONGO_URI"), Database: "mydb",})
// Generic repositoryuserRepo := ssmongo.NewRepository[User, string](client, "users")
// userRepo implements core.Repository[User, string]userRepo.FindByID(ctx, "abc-123")userRepo.FindAll(ctx, core.PageQuery{Page: 1, Limit: 20})userRepo.Create(ctx, &user)userRepo.Update(ctx, "abc-123", &user)userRepo.Delete(ctx, "abc-123")Document Definition
Section titled “Document Definition”type User struct { ID string `bson:"_id"` Name string `bson:"name"` Email string `bson:"email"`}Health Check
Section titled “Health Check”app.RegisterHealthChecker(ssmongo.NewHealthChecker(client))// → "mongodb": "UP" in GET /healthCustom Queries
Section titled “Custom Queries”type UserRepository struct { *ssmongo.Repository[User, string] coll *mongo.Collection}
func (r *UserRepository) FindByEmail(ctx context.Context, email string) (*User, error) { var user User return &user, r.coll.FindOne(ctx, bson.M{"email": email}).Decode(&user)}