package store

import (
	"context"

	"data-platform/model"
)

type CloudOrderStore interface {
	List(_ context.Context) (records []model.CloudOrder, err error)
	ListByMonth(_ context.Context, billMonth string, sync int) (records []*model.CloudOrder, err error)
	ListByCondition(_ context.Context, id uint64, billMonth, status, accountName, adjustTenantID string, sync, offset, pageSize int) (records []*model.CloudOrder, total int64, err error)
	DeleteAndSave(_ context.Context, records []model.CloudOrder) ([]model.CloudOrder, error)
	GetByFakeNumber(_ context.Context, fakeNumber string) (record model.CloudOrder, err error)
	GetBySourceRef(_ context.Context, billMonth, adjustTenantID, sourceRef string) (record model.CloudOrder, err error)
	ListBySourceRef(_ context.Context, billMonth, adjustTenantID, sourceRef string) (records []model.CloudOrder, err error)
	GetByAdjustID(_ context.Context, adjustTenantID string, billMonth string) (record model.CloudOrder, err error)
	GetByAdjustIDAndAccount(_ context.Context, adjustTenantID, billMonth, accountNumber string) (record model.CloudOrder, err error)
	GetByID(_ context.Context, id uint64) (record model.CloudOrder, err error)
	TryLockByID(_ context.Context, id uint64) (locked bool, err error)
	UnlockByID(_ context.Context, id uint64) error
	Update(_ context.Context, record *model.CloudOrder) error
	Delete(_ context.Context, id uint64) error
}
