Some checks failed
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/chain_gateway Pipeline was successful
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/fx_oracle Pipeline was successful
ci/woodpecker/push/frontend Pipeline was successful
ci/woodpecker/push/nats Pipeline was successful
ci/woodpecker/push/ledger Pipeline was successful
ci/woodpecker/push/notification Pipeline was successful
ci/woodpecker/push/payments_orchestrator Pipeline was successful
ci/woodpecker/push/bump_version Pipeline failed
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package recipientdb
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/tech/sendico/pkg/auth"
|
|
"github.com/tech/sendico/pkg/db/paymethod"
|
|
"github.com/tech/sendico/pkg/db/policy"
|
|
"github.com/tech/sendico/pkg/db/repository"
|
|
"github.com/tech/sendico/pkg/mlogger"
|
|
"github.com/tech/sendico/pkg/model"
|
|
"github.com/tech/sendico/pkg/mservice"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
type RecipientDB struct {
|
|
auth.ProtectedDBImp[*model.Recipient]
|
|
auth.ArchivableDB[*model.Recipient]
|
|
pmdb paymethod.DB
|
|
paymentMethodsRepo repository.Repository
|
|
}
|
|
|
|
func Create(ctx context.Context,
|
|
logger mlogger.Logger,
|
|
enforcer auth.Enforcer,
|
|
pdb policy.DB,
|
|
pmdb paymethod.DB,
|
|
db *mongo.Database,
|
|
) (*RecipientDB, error) {
|
|
p, err := auth.CreateDBImp[*model.Recipient](ctx, logger, pdb, enforcer, mservice.Organizations, db)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
createEmpty := func() *model.Recipient {
|
|
return &model.Recipient{}
|
|
}
|
|
|
|
getArchivable := func(c *model.Recipient) model.Archivable {
|
|
return &c.ArchivableBase
|
|
}
|
|
|
|
res := &RecipientDB{
|
|
ProtectedDBImp: *p,
|
|
ArchivableDB: auth.NewArchivableDB(
|
|
p.DBImp,
|
|
p.DBImp.Logger,
|
|
enforcer,
|
|
createEmpty,
|
|
getArchivable,
|
|
),
|
|
paymentMethodsRepo: repository.CreateMongoRepository(db, string(mservice.PaymentMethods)),
|
|
pmdb: pmdb,
|
|
}
|
|
return res, nil
|
|
}
|