package models

import "time"

// A Comment is a comment on a chapter.
type Comment struct {
	ID            string    `bson:"_id"`
	ChapterID     string    `bson:"chapterId"`
	Subject       string    `bson:"subject"`
	Author        string    `bson:"author"`
	CharacterName string    `bson:"characterName"`
	CharacterID   string    `bson:"characterId"`
	FictionalDate time.Time `bson:"fictionalDate"`
	CreatedDate   time.Time `bson:"createdDate"`
	EditedDate    time.Time `bson:"editedDate"`
	Source        string    `bson:"source"`
}

// IsChangeObject is an interface implementation to identify it as a valid
// ChangeObject in GQL.
func (*Comment) IsChangeObject() {
	panic("this method is a dummy, and so is its caller")
}

type CommentFilter struct {
	ChapterID *string
	Limit     int
}

type CommentUpdate struct {
	Source        *string
	CharacterName *string
	CharacterID   *string
	Subject       *string
	FictionalDate *time.Time
}