chore(repo): reinitialize repository
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
package httpapi
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"inbox/internal/base/httpx"
|
||||
"inbox/internal/domain/message"
|
||||
"inbox/internal/domain/topic"
|
||||
)
|
||||
|
||||
func (h *Handler) listTopics(w http.ResponseWriter, r *http.Request) {
|
||||
items, err := h.Topics.List(r.Context(), r.URL.Query().Get("workspace_id"))
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusOK, map[string]any{"topics": items})
|
||||
}
|
||||
|
||||
func (h *Handler) createTopic(w http.ResponseWriter, r *http.Request) {
|
||||
type request struct {
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
Slug string `json:"slug"`
|
||||
Title string `json:"title"`
|
||||
Space string `json:"space"`
|
||||
Status string `json:"status"`
|
||||
Summary string `json:"summary"`
|
||||
}
|
||||
var req request
|
||||
if err := httpx.DecodeJSON(r, &req); err != nil {
|
||||
httpx.WriteError(w, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
item, err := h.Topics.Create(r.Context(), topic.Record{
|
||||
WorkspaceID: req.WorkspaceID,
|
||||
Slug: req.Slug,
|
||||
Title: req.Title,
|
||||
Space: topic.Space(req.Space),
|
||||
Status: req.Status,
|
||||
Summary: req.Summary,
|
||||
})
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusCreated, item)
|
||||
}
|
||||
|
||||
func (h *Handler) getTopic(w http.ResponseWriter, r *http.Request) {
|
||||
item, err := h.Topics.Get(r.Context(), r.PathValue("topicID"))
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusOK, item)
|
||||
}
|
||||
|
||||
func (h *Handler) stopTopic(w http.ResponseWriter, r *http.Request) {
|
||||
item, err := h.Topics.Stop(r.Context(), r.PathValue("topicID"))
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusAccepted, item)
|
||||
}
|
||||
|
||||
func (h *Handler) confirmTopicPlan(w http.ResponseWriter, r *http.Request) {
|
||||
item, err := h.Topics.ConfirmPlan(r.Context(), r.PathValue("topicID"))
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusAccepted, item)
|
||||
}
|
||||
|
||||
func (h *Handler) deleteTopic(w http.ResponseWriter, r *http.Request) {
|
||||
if err := h.Topics.Delete(r.Context(), r.PathValue("topicID")); err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
func (h *Handler) listTopicMessages(w http.ResponseWriter, r *http.Request) {
|
||||
items, err := h.Topics.ListMessages(r.Context(), r.PathValue("topicID"))
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusOK, map[string]any{"messages": items})
|
||||
}
|
||||
|
||||
func (h *Handler) createTopicMessage(w http.ResponseWriter, r *http.Request) {
|
||||
type request struct {
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
FromRoleName string `json:"from_role_name"`
|
||||
ToExpr string `json:"to_expr"`
|
||||
Type string `json:"type"`
|
||||
Stage string `json:"stage"`
|
||||
ReplyToMessageID string `json:"reply_to_message_id"`
|
||||
BodyMarkdown string `json:"body_markdown"`
|
||||
}
|
||||
var req request
|
||||
if err := httpx.DecodeJSON(r, &req); err != nil {
|
||||
httpx.WriteError(w, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
item, err := h.Topics.CreateMessage(r.Context(), message.Record{
|
||||
WorkspaceID: req.WorkspaceID,
|
||||
TopicID: r.PathValue("topicID"),
|
||||
FromRoleName: req.FromRoleName,
|
||||
ToExpr: req.ToExpr,
|
||||
Type: message.Type(req.Type),
|
||||
Stage: req.Stage,
|
||||
ReplyToMessageID: req.ReplyToMessageID,
|
||||
BodyMarkdown: req.BodyMarkdown,
|
||||
})
|
||||
if err != nil {
|
||||
writeStoreError(w, err)
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusCreated, item)
|
||||
}
|
||||
Reference in New Issue
Block a user