package collaboration

import "time"

type Comment struct {
	ID          string     `json:"id"`
	DocumentID  string     `json:"documentId"`
	VersionHash string     `json:"versionHash"`
	ParentID    *string    `json:"parentId,omitempty"`
	AuthorID    string     `json:"authorId"`
	AuthorName  string     `json:"authorName"`
	Content     string     `json:"content"`
	AnchorHash  *string    `json:"anchorHash,omitempty"`
	AnchorLine  *int       `json:"anchorLine,omitempty"`
	CreatedAt   time.Time  `json:"createdAt"`
	ResolvedAt  *time.Time `json:"resolvedAt,omitempty"`
	ResolvedBy  *string    `json:"resolvedBy,omitempty"`
}

type CreateCommentInput struct {
	DocumentID  string  `json:"documentId"`
	VersionHash string  `json:"versionHash"`
	ParentID    *string `json:"parentId,omitempty"`
	Content     string  `json:"content"`
	AnchorHash  *string `json:"anchorHash,omitempty"`
	AnchorLine  *int    `json:"anchorLine,omitempty"`
}

type Notification struct {
	ID           string     `json:"id"`
	UserID       string     `json:"userId"`
	Type         string     `json:"type"`
	ResourceType string     `json:"resourceType"`
	ResourceID   string     `json:"resourceId"`
	Message      string     `json:"message"`
	ReadAt       *time.Time `json:"readAt,omitempty"`
	EmailedAt    *time.Time `json:"emailedAt,omitempty"`
	CreatedAt    time.Time  `json:"createdAt"`
}

type Watcher struct {
	UserID     string    `json:"userId"`
	DocumentID *string   `json:"documentId,omitempty"`
	FolderPath *string   `json:"folderPath,omitempty"`
	CreatedAt  time.Time `json:"createdAt"`
}

type NotificationBell struct {
	UnreadCount int              `json:"unreadCount"`
	Items       []Notification   `json:"items"`
}
