openmeter / entitlement /adapter /usage_reset.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 5)
cee2387 verified
Raw
History Blame Contribute Delete
1.35 kB
package adapter
import (
"context"
"github.com/openmeterio/openmeter/openmeter/ent/db"
meteredentitlement "github.com/openmeterio/openmeter/openmeter/entitlement/metered"
"github.com/openmeterio/openmeter/pkg/framework/entutils"
"github.com/openmeterio/openmeter/pkg/framework/transaction"
)
type usageResetDBAdapter struct {
db *db.Client
}
var (
_ meteredentitlement.UsageResetRepo = (*usageResetDBAdapter)(nil)
_ interface {
transaction.Creator
entutils.TxUser[*usageResetDBAdapter]
} = (*usageResetDBAdapter)(nil)
)
func NewPostgresUsageResetRepo(db *db.Client) *usageResetDBAdapter {
return &usageResetDBAdapter{
db: db,
}
}
func (a *usageResetDBAdapter) Save(ctx context.Context, usageResetTime meteredentitlement.UsageResetUpdate) error {
_, err := entutils.TransactingRepo[interface{}, *usageResetDBAdapter](
ctx,
a,
func(ctx context.Context, repo *usageResetDBAdapter) (interface{}, error) {
if err := usageResetTime.Validate(); err != nil {
return nil, err
}
_, err := repo.db.UsageReset.Create().
SetEntitlementID(usageResetTime.EntitlementID).
SetNamespace(usageResetTime.Namespace).
SetResetTime(usageResetTime.ResetTime).
SetAnchor(usageResetTime.Anchor).
SetUsagePeriodInterval(usageResetTime.UsagePeriodInterval).
Save(ctx)
return nil, err
},
)
return err
}