package domain import ( "context" "time" ) // Пользователь type User struct { ID int `json:"id"` Username string `json:"username"` Email string `json:"email"` Password string `json:"-"` // Пароль не должен возвращаться в ответах CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } // Пост в блоге type Post struct { ID int `json:"id"` Title string `json:"title"` Content string `json:"content"` AuthorID int `json:"authorId"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } // Комментарий к посту type Comment struct { ID int `json:"id"` Content string `json:"content"` PostID int `json:"postId"` AuthorID int `json:"authorId"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } // Лайк к посту type Like struct { ID int `json:"id"` PostID int `json:"postId"` UserID int `json:"userId"` CreatedAt time.Time `json:"createdAt"` } // Токены для аутентификации type Tokens struct { AccessToken string `json:"accessToken"` RefreshToken string `json:"refreshToken"` } // Типы для аутентификации type RegisterInput struct { Username string `json:"username"` Email string `json:"email"` Password string `json:"password"` } type LoginInput struct { Email string `json:"email"` Password string `json:"password"` } type MutationResolver interface { CreatePost(ctx context.Context, title string, content string) (*Post, error) AddComment(ctx context.Context, postID int, content string) (*Comment, error) } type QueryResolver interface { Posts(ctx context.Context) ([]*Post, error) Post(ctx context.Context, id int) (*Post, error) }