package store import "context" // Store is the application persistence API used by the web layer. type Store interface { CreateUser(ctx context.Context, u *User) error UserByID(ctx context.Context, id string) (*User, error) UserByUsername(ctx context.Context, username string) (*User, error) ListUsers(ctx context.Context) ([]User, error) CountAdmins(ctx context.Context) (int, error) SetUserRole(ctx context.Context, id string, role Role) error SaveUserProfile(ctx context.Context, u *User) error CreateQuestion(ctx context.Context, q *RankedQuestion) error GetQuestion(ctx context.Context, id, viewerID string) (*RankedQuestion, error) ListHunt(ctx context.Context, huntDate, viewerID string) ([]RankedQuestion, error) ListQuestionsByAuthor(ctx context.Context, authorID string) ([]RankedQuestion, error) ListQuestionsAnsweredBy(ctx context.Context, adminID string) ([]RankedQuestion, error) HideQuestion(ctx context.Context, id string) error GetAnswer(ctx context.Context, questionID string) (*Answer, error) UpsertAnswer(ctx context.Context, a *Answer) error Vote(ctx context.Context, userID, questionID string, value int) error }