Leon4gr45's picture
Upload folder using huggingface_hub (part 3)
1c4c66b verified
Raw
History Blame Contribute Delete
1.35 kB
package subscriptionsync
import (
"context"
"errors"
"time"
"github.com/openmeterio/openmeter/pkg/framework/entutils"
"github.com/openmeterio/openmeter/pkg/models"
)
type Adapter interface {
SyncStateAdapter
entutils.TxCreator
}
type SyncStateAdapter interface {
InvalidateSyncState(ctx context.Context, input InvalidateSyncStateInput) error
GetSyncStates(ctx context.Context, input GetSyncStatesInput) ([]SyncState, error)
UpsertSyncState(ctx context.Context, input UpsertSyncStateInput) error
}
type InvalidateSyncStateInput = models.NamespacedID
type GetSyncStatesInput = []models.NamespacedID
type UpsertSyncStateInput = SyncState
type SyncState struct {
SubscriptionID models.NamespacedID
HasBillables bool
SyncedAt time.Time
NextSyncAfter *time.Time
}
func (i UpsertSyncStateInput) Validate() error {
var errs []error
if err := i.SubscriptionID.Validate(); err != nil {
errs = append(errs, err)
}
if i.SyncedAt.IsZero() {
errs = append(errs, errors.New("synced at is required"))
}
if i.HasBillables && i.NextSyncAfter == nil {
errs = append(errs, errors.New("next sync after is required when the subscription has billables"))
}
if i.NextSyncAfter != nil && i.NextSyncAfter.IsZero() {
errs = append(errs, errors.New("next sync after must not be zero"))
}
return errors.Join(errs...)
}