package main

import "time"

// BookStatus описывает жизненный цикл книги внутри клуба.
type BookStatus string

const (
	StatusSuggested BookStatus = "suggested" // предложена, идёт голосование
	StatusReading   BookStatus = "reading"   // выбрана, клуб читает
	StatusFinished  BookStatus = "finished"  // прочитана
)

// Club — книжный клуб.
type Club struct {
	ID          string    `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	CreatedAt   time.Time `json:"createdAt"`
}

// Member — участник клуба.
type Member struct {
	ID       string    `json:"id"`
	ClubID   string    `json:"clubId"`
	Name     string    `json:"name"`
	JoinedAt time.Time `json:"joinedAt"`
}

// Book — книга в рамках клуба.
type Book struct {
	ID        string     `json:"id"`
	ClubID    string     `json:"clubId"`
	Title     string     `json:"title"`
	Author    string     `json:"author"`
	Status    BookStatus `json:"status"`
	AddedBy   string     `json:"addedBy"`
	Votes     []string   `json:"votes"` // имена проголосовавших
	CreatedAt time.Time  `json:"createdAt"`
}

// Meeting — встреча/обсуждение клуба.
type Meeting struct {
	ID        string    `json:"id"`
	ClubID    string    `json:"clubId"`
	BookID    string    `json:"bookId"` // может быть пустым
	Title     string    `json:"title"`
	StartsAt  time.Time `json:"startsAt"`
	Location  string    `json:"location"`
	Notes     string    `json:"notes"`
	CreatedAt time.Time `json:"createdAt"`
}

// Post — сообщение в обсуждении клуба.
type Post struct {
	ID        string    `json:"id"`
	ClubID    string    `json:"clubId"`
	Author    string    `json:"author"`
	Body      string    `json:"body"`
	CreatedAt time.Time `json:"createdAt"`
}
