package store

import (
	"context"

	v1 "github.com/pingcap-inc/security/model/v1"
)

type CompanyStore interface {
	CreateCompany(_ context.Context, record []v1.Company) error
	CreateCompanyOne(_ context.Context, records v1.Company) error
	ListCompany(_ context.Context) (records []v1.Company, err error)
	GetCompany(_ context.Context, name, country string) (record []*v1.Company, err error)
	ListCompanyByStatus(_ context.Context, status int) (records []*v1.Company, err error)
	UpdateCompanyStatus(_ context.Context, record *v1.Company) error
	SaveComProblem(_ context.Context, record *v1.CompanyProblem) error
	ListComProblem(_ context.Context) (records []v1.CompanyProblem, err error)
	GetComProblem(_ context.Context, name string) (record *v1.CompanyProblem, err error)
	SaveSanction(_ context.Context, record *v1.CompanySanction) (uint64, error)
	ListSanction(_ context.Context) (records []v1.CompanySanction, err error)
	SaveCompanyBasic(_ context.Context, record *v1.CompanyBasic) error
	ListCompanyOthers(_ context.Context) (records []v1.CompanyBasic, err error)
	SaveSanctionReferences(_ context.Context, record []v1.CompanySanctionReferences) error
	ListSanctionReferences(_ context.Context) (records []v1.CompanySanctionReferences, err error)
	ListAllByCompanyIDs(_ context.Context, comIDs []uint64) (ci []*v1.CompanyProblem, cs []*v1.CompanySanction, csr []*v1.CompanySanctionReferences, co []*v1.CompanyBasic, err error)
	SaveUserLog(_ context.Context, record *v1.UserLog) error
}
