| 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 |
| } |
|
|