//go:generate mockgen -source=interface.go -destination=mocks/mock.go -package=mocks
package db

import (
	"context"
	"evening_detective/internal/models"
)

type IDBService interface {
	Close()

	GetTeams(ctx context.Context) ([]*models.Team, error)
	GetTeam(ctx context.Context, teamId any, password any) (*models.Team, error)
	AddTeams(ctx context.Context, teams []*models.Team) ([]*models.Team, error)
	DeleteAllTeams(ctx context.Context) error

	GetActions(ctx context.Context, teamId int64) ([]*models.Action, error)
	AddActions(ctx context.Context, teamId int64, actions []*models.Action) error

	GetApplications(ctx context.Context, teamId int64) ([]*models.Application, error)
	GetApplicationsByState(ctx context.Context, teamId int64, state string) ([]*models.Application, error)
	AddApplications(ctx context.Context, teamId int64, applications []*models.Application) error

	GiveApplications(ctx context.Context, teamId int64, applications []*models.Application) error

	GetGame(ctx context.Context) (*models.Game, error)
	UpdateGameState(ctx context.Context, state string) error
}
