package native

import (
	"context"

	"github.com/tech/sendico/pkg/auth/internal/native/db"
	"github.com/tech/sendico/pkg/auth/internal/native/nstructures"
	"github.com/tech/sendico/pkg/db/template"
	"github.com/tech/sendico/pkg/mlogger"
	"go.mongodb.org/mongo-driver/v2/bson"
	"go.mongodb.org/mongo-driver/v2/mongo"
)

type RolesDB interface {
	template.DB[*nstructures.RoleAssignment]
	Roles(ctx context.Context, accountRef, organizationRef bson.ObjectID) ([]nstructures.RoleAssignment, error)
	RolesForVenue(ctx context.Context, organizationRef bson.ObjectID) ([]nstructures.RoleAssignment, error)
	RemoveRole(ctx context.Context, roleRef, organizationRef, accountRef bson.ObjectID) error
	DeleteRole(ctx context.Context, roleRef bson.ObjectID) error
}

func NewRolesDB(logger mlogger.Logger, conn *mongo.Database) (RolesDB, error) {
	return db.NewRolesDB(logger, conn)
}
