From d6418f5ff9b1ad3eb866367c521ae195ad7c0025 Mon Sep 17 00:00:00 2001 From: email Date: Fri, 4 Feb 2022 16:51:48 +0800 Subject: [PATCH] chore(go): use `json` instead of `jsonapi` --- api/auth.go | 8 ++++---- api/memo.go | 16 ++++++++-------- api/resource.go | 32 ++++++++++++++++---------------- api/shortcut.go | 26 ++++++++++++-------------- api/user.go | 34 +++++++++++++++++++++------------- go.mod | 1 - go.sum | 2 -- server/auth.go | 10 +++++----- server/memo.go | 14 +++++++------- server/resource.go | 6 +++--- server/server.go | 7 ++++--- server/shortcut.go | 25 ++++++++----------------- server/user.go | 34 ++++++++++++++++++++++++++++++---- server/webhook.go | 6 +++--- store/seed/10001_schema.sql | 3 ++- store/shortcut.go | 16 ++++++++-------- 16 files changed, 131 insertions(+), 109 deletions(-) diff --git a/api/auth.go b/api/auth.go index 5e8bf3e6..504c8c0b 100644 --- a/api/auth.go +++ b/api/auth.go @@ -1,11 +1,11 @@ package api type Login struct { - Name string `jsonapi:"attr,name"` - Password string `jsonapi:"attr,password"` + Name string `json:"name"` + Password string `json:"password"` } type Signup struct { - Name string `jsonapi:"attr,name"` - Password string `jsonapi:"attr,password"` + Name string `json:"name"` + Password string `json:"password"` } diff --git a/api/memo.go b/api/memo.go index c3950f6f..19945404 100644 --- a/api/memo.go +++ b/api/memo.go @@ -1,17 +1,17 @@ package api type Memo struct { - Id int `jsonapi:"primary,memo"` - CreatedTs int64 `jsonapi:"attr,createdTs"` - UpdatedTs int64 `jsonapi:"attr,updatedTs"` - RowStatus string `jsonapi:"attr,rowStatus"` + Id int `json:"id"` + CreatedTs int64 `json:"createdTs"` + UpdatedTs int64 `json:"updatedTs"` + RowStatus string `json:"rowStatus"` - Content string `jsonapi:"attr,content"` - CreatorId int `jsonapi:"attr,creatorId"` + Content string `json:"content"` + CreatorId int `json:"creatorId"` } type MemoCreate struct { - Content string `jsonapi:"attr,content"` + Content string `json:"content"` CreatorId int } @@ -28,7 +28,7 @@ type MemoFind struct { } type MemoDelete struct { - Id *int `jsonapi:"primary,memo"` + Id *int `json:"id"` CreatorId *int } diff --git a/api/resource.go b/api/resource.go index 19f8295f..da6a4a44 100644 --- a/api/resource.go +++ b/api/resource.go @@ -1,31 +1,31 @@ package api type Resource struct { - Id int `jsonapi:"primary,resource"` - CreatedTs int64 `jsonapi:"attr,createdTs"` - UpdatedTs int64 `jsonapi:"attr,updatedTs"` + Id int `json:"id"` + CreatedTs int64 `json:"createdTs"` + UpdatedTs int64 `json:"updatedTs"` - Filename string `jsonapi:"attr,filename"` - Blob []byte `jsonapi:"attr,blob"` - Type string `jsonapi:"attr,type"` - Size int64 `jsonapi:"attr,size"` + Filename string `json:"filename"` + Blob []byte `json:"blob"` + Type string `json:"type"` + Size int64 `json:"size"` - CreatorId int `jsonapi:"attr,creatorId"` + CreatorId int `json:"creatorId"` } type ResourceCreate struct { - Filename string `jsonapi:"attr,filename"` - Blob []byte `jsonapi:"attr,blob"` - Type string `jsonapi:"attr,type"` - Size int64 `jsonapi:"attr,size"` + Filename string `json:"filename"` + Blob []byte `json:"blob"` + Type string `json:"type"` + Size int64 `json:"size"` - CreatorId int `jsonapi:"attr,creatorId"` + CreatorId int } type ResourceFind struct { - Id *int - CreatorId *int - Filename *string + Id *int `json:"id"` + CreatorId *int `json:"creatorId"` + Filename *string `json:"filename"` } type ResourceDelete struct { diff --git a/api/shortcut.go b/api/shortcut.go index b200da9c..b240dc3e 100644 --- a/api/shortcut.go +++ b/api/shortcut.go @@ -1,13 +1,13 @@ package api type Shortcut struct { - Id int `jsonapi:"primary,shortcut"` - CreatedTs int64 `jsonapi:"attr,createdTs"` - UpdatedTs int64 `jsonapi:"attr,updatedTs"` + Id int `json:"id"` + CreatedTs int64 `json:"createdTs"` + UpdatedTs int64 `json:"updatedTs"` - Title string `jsonapi:"attr,title"` - Payload string `jsonapi:"attr,payload"` - PinnedTs int64 `jsonapi:"attr,pinnedTs"` + Title string `json:"title"` + Payload string `json:"payload"` + RowStatus string `json:"rowStatus"` CreatorId int } @@ -16,18 +16,16 @@ type ShortcutCreate struct { CreatorId int // Domain specific fields - Title string `jsonapi:"attr,title"` - Payload string `jsonapi:"attr,payload"` + Title string `json:"title"` + Payload string `json:"payload"` } type ShortcutPatch struct { Id int - Title *string `jsonapi:"attr,title"` - Payload *string `jsonapi:"attr,payload"` - PinnedTs *int64 - - Pinned *bool `jsonapi:"attr,pinned"` + Title *string `json:"title"` + Payload *string `json:"payload"` + RowStatus *string `json:"rowStatus"` } type ShortcutFind struct { @@ -37,7 +35,7 @@ type ShortcutFind struct { CreatorId *int // Domain specific fields - Title *string `jsonapi:"attr,title"` + Title *string `json:"title"` } type ShortcutDelete struct { diff --git a/api/user.go b/api/user.go index 80042117..4ba9169c 100644 --- a/api/user.go +++ b/api/user.go @@ -1,19 +1,19 @@ package api type User struct { - Id int `jsonapi:"primary,user"` - CreatedTs int64 `jsonapi:"attr,createdTs"` - UpdatedTs int64 `jsonapi:"attr,updatedTs"` + Id int `json:"id"` + CreatedTs int64 `json:"createdTs"` + UpdatedTs int64 `json:"updatedTs"` - OpenId string `jsonapi:"attr,openId"` - Name string `jsonapi:"attr,name"` + OpenId string `json:"openId"` + Name string `json:"name"` Password string } type UserCreate struct { - OpenId string `jsonapi:"attr,openId"` - Name string `jsonapi:"attr,name"` - Password string `jsonapi:"attr,password"` + OpenId string `json:"openId"` + Name string `json:"name"` + Password string `json:"password"` } type UserPatch struct { @@ -21,18 +21,26 @@ type UserPatch struct { OpenId *string - Name *string `jsonapi:"attr,name"` - Password *string `jsonapi:"attr,password"` - ResetOpenId *bool `jsonapi:"attr,resetOpenId"` + Name *string `json:"name"` + Password *string `json:"password"` + ResetOpenId *bool `json:"resetOpenId"` } type UserFind struct { - Id *int `jsonapi:"attr,id"` + Id *int `json:"id"` - Name *string `jsonapi:"attr,name"` + Name *string `json:"name"` OpenId *string } +type UserRenameCheck struct { + Name string `json:"name"` +} + +type UserPasswordCheck struct { + Password string `json:"password"` +} + type UserService interface { CreateUser(create *UserCreate) (*User, error) PatchUser(patch *UserPatch) (*User, error) diff --git a/go.mod b/go.mod index 623915ce..4ee1d61f 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,6 @@ require ( ) require ( - github.com/google/jsonapi v1.0.0 github.com/gorilla/securecookie v1.1.1 // indirect github.com/gorilla/sessions v1.2.1 github.com/labstack/echo-contrib v0.12.0 diff --git a/go.sum b/go.sum index 3024fd4f..530251b8 100644 --- a/go.sum +++ b/go.sum @@ -133,8 +133,6 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/jsonapi v1.0.0 h1:qIGgO5Smu3yJmSs+QlvhQnrscdZfFhiV6S8ryJAglqU= -github.com/google/jsonapi v1.0.0/go.mod h1:YYHiRPJT8ARXGER8In9VuLv4qvLfDmA9ULQqptbLE4s= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= diff --git a/server/auth.go b/server/auth.go index fe28f85b..85f8bf50 100644 --- a/server/auth.go +++ b/server/auth.go @@ -1,19 +1,19 @@ package server import ( + "encoding/json" "fmt" "memos/api" "memos/common" "net/http" - "github.com/google/jsonapi" "github.com/labstack/echo/v4" ) func (s *Server) registerAuthRoutes(g *echo.Group) { g.POST("/auth/login", func(c echo.Context) error { login := &api.Login{} - if err := jsonapi.UnmarshalPayload(c.Request().Body, login); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(login); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted login request").SetInternal(err) } @@ -40,7 +40,7 @@ func (s *Server) registerAuthRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, user); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(user); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal create user response").SetInternal(err) } @@ -57,7 +57,7 @@ func (s *Server) registerAuthRoutes(g *echo.Group) { }) g.POST("/auth/signup", func(c echo.Context) error { signup := &api.Signup{} - if err := jsonapi.UnmarshalPayload(c.Request().Body, signup); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(signup); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted signup request").SetInternal(err) } @@ -88,7 +88,7 @@ func (s *Server) registerAuthRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, user); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(user); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal create user response").SetInternal(err) } diff --git a/server/memo.go b/server/memo.go index fbd5cd4c..41bd7046 100644 --- a/server/memo.go +++ b/server/memo.go @@ -1,13 +1,13 @@ package server import ( + "encoding/json" "fmt" "memos/api" "memos/common" "net/http" "strconv" - "github.com/google/jsonapi" "github.com/labstack/echo/v4" ) @@ -17,7 +17,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { memoCreate := &api.MemoCreate{ CreatorId: userId, } - if err := jsonapi.UnmarshalPayload(c.Request().Body, memoCreate); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(memoCreate); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post memo request").SetInternal(err) } @@ -27,7 +27,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, memo); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(memo); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal memo response").SetInternal(err) } @@ -42,7 +42,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { memoPatch := &api.MemoPatch{ Id: memoId, } - if err := jsonapi.UnmarshalPayload(c.Request().Body, memoPatch); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(memoPatch); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted patch memo request").SetInternal(err) } @@ -52,7 +52,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, memo); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(memo); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal memo response").SetInternal(err) } @@ -69,7 +69,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, list); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(list); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal memo list response").SetInternal(err) } @@ -93,7 +93,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, memo); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(memo); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal memo response").SetInternal(err) } diff --git a/server/resource.go b/server/resource.go index a727712f..e1dd4c0a 100644 --- a/server/resource.go +++ b/server/resource.go @@ -1,13 +1,13 @@ package server import ( + "encoding/json" "fmt" "io/ioutil" "memos/api" "net/http" "strconv" - "github.com/google/jsonapi" "github.com/labstack/echo/v4" ) @@ -53,7 +53,7 @@ func (s *Server) registerResourceRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, resource); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(resource); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal shortcut response").SetInternal(err) } @@ -70,7 +70,7 @@ func (s *Server) registerResourceRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, list); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(list); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal resource list response").SetInternal(err) } diff --git a/server/server.go b/server/server.go index 633b127d..56ed641a 100644 --- a/server/server.go +++ b/server/server.go @@ -29,9 +29,10 @@ func NewServer() *Server { e.HidePort = false e.Use(middleware.StaticWithConfig(middleware.StaticConfig{ - Root: "web/dist", - Browse: false, - HTML5: true, + Skipper: middleware.DefaultSkipper, + Root: "web/dist", + Browse: false, + HTML5: true, })) e.Use(session.Middleware(sessions.NewCookieStore([]byte(common.GenUUID())))) diff --git a/server/shortcut.go b/server/shortcut.go index 406f9648..c6afcbba 100644 --- a/server/shortcut.go +++ b/server/shortcut.go @@ -1,13 +1,12 @@ package server import ( + "encoding/json" "fmt" "memos/api" "net/http" "strconv" - "time" - "github.com/google/jsonapi" "github.com/labstack/echo/v4" ) @@ -17,7 +16,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { shortcutCreate := &api.ShortcutCreate{ CreatorId: userId, } - if err := jsonapi.UnmarshalPayload(c.Request().Body, shortcutCreate); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(shortcutCreate); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post shortcut request").SetInternal(err) } @@ -27,7 +26,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, shortcut); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(shortcut); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal shortcut response").SetInternal(err) } @@ -42,25 +41,17 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { shortcutPatch := &api.ShortcutPatch{ Id: shortcutId, } - if err := jsonapi.UnmarshalPayload(c.Request().Body, shortcutPatch); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(shortcutPatch); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted patch shortcut request").SetInternal(err) } - if shortcutPatch.Pinned != nil { - pinnedTs := int64(0) - if *shortcutPatch.Pinned { - pinnedTs = time.Now().Unix() - } - shortcutPatch.PinnedTs = &pinnedTs - } - shortcut, err := s.ShortcutService.PatchShortcut(shortcutPatch) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to patch shortcut").SetInternal(err) } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, shortcut); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(shortcut); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal shortcut response").SetInternal(err) } @@ -71,13 +62,13 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { shortcutFind := &api.ShortcutFind{ CreatorId: &userId, } - list, err := s.ShortcutService.FindShortcut(shortcutFind) + list, err := s.ShortcutService.FindShortcutList(shortcutFind) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to fetch shortcut list").SetInternal(err) } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, list); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(list); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal shortcut list response").SetInternal(err) } @@ -98,7 +89,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, shortcut); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(shortcut); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal shortcut response").SetInternal(err) } diff --git a/server/user.go b/server/user.go index 99ce594d..b1ac50fe 100644 --- a/server/user.go +++ b/server/user.go @@ -1,11 +1,11 @@ package server import ( + "encoding/json" "memos/api" "memos/common" "net/http" - "github.com/google/jsonapi" "github.com/labstack/echo/v4" ) @@ -21,9 +21,35 @@ func (s *Server) registerUserRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, user); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(user); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal user response").SetInternal(err) } + + return nil + }) + g.POST("/user/rename_check", func(c echo.Context) error { + userRenameCheck := &api.UserRenameCheck{} + if err := json.NewDecoder(c.Request().Body).Decode(userRenameCheck); err != nil { + return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post user rename check request").SetInternal(err) + } + + if userRenameCheck.Name == "" { + return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post user rename check request") + } + + userFind := &api.UserFind{ + Name: &userRenameCheck.Name, + } + user, err := s.UserService.FindUser(userFind) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "Failed to find user").SetInternal(err) + } + + c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) + if err := json.NewEncoder(c.Response().Writer).Encode(user); err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal user response").SetInternal(err) + } + return nil }) g.PATCH("user/me", func(c echo.Context) error { @@ -31,7 +57,7 @@ func (s *Server) registerUserRoutes(g *echo.Group) { userPatch := &api.UserPatch{ Id: userId, } - if err := jsonapi.UnmarshalPayload(c.Request().Body, userPatch); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(userPatch); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted patch user request").SetInternal(err) } @@ -46,7 +72,7 @@ func (s *Server) registerUserRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, user); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(user); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal user response").SetInternal(err) } diff --git a/server/webhook.go b/server/webhook.go index 070dc099..b98216e1 100644 --- a/server/webhook.go +++ b/server/webhook.go @@ -1,12 +1,12 @@ package server import ( + "encoding/json" "fmt" "memos/api" "net/http" "strconv" - "github.com/google/jsonapi" "github.com/labstack/echo/v4" ) @@ -31,7 +31,7 @@ func (s *Server) registerWebhookRoutes(g *echo.Group) { memoCreate := &api.MemoCreate{ CreatorId: user.Id, } - if err := jsonapi.UnmarshalPayload(c.Request().Body, memoCreate); err != nil { + if err := json.NewDecoder(c.Request().Body).Decode(memoCreate); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post memo request by open api").SetInternal(err) } @@ -41,7 +41,7 @@ func (s *Server) registerWebhookRoutes(g *echo.Group) { } c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := jsonapi.MarshalPayload(c.Response().Writer, memo); err != nil { + if err := json.NewEncoder(c.Response().Writer).Encode(memo); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to marshal memo response").SetInternal(err) } diff --git a/store/seed/10001_schema.sql b/store/seed/10001_schema.sql index 3a21b329..cdfdea61 100644 --- a/store/seed/10001_schema.sql +++ b/store/seed/10001_schema.sql @@ -64,7 +64,8 @@ CREATE TABLE shortcut ( title TEXT NOT NULL DEFAULT '', payload TEXT NOT NULL DEFAULT '', creator_id INTEGER NOT NULL, - pinned_ts BIGINT NOT NULL DEFAULT 0, + -- allowed row status are 'NORMAL', 'ARCHIVED'. + row_status TEXT NOT NULL DEFAULT 'NORMAL', FOREIGN KEY(creator_id) REFERENCES users(id) ); diff --git a/store/shortcut.go b/store/shortcut.go index 323a93cc..3e3ae3ea 100644 --- a/store/shortcut.go +++ b/store/shortcut.go @@ -72,7 +72,7 @@ func createShortcut(db *DB, create *api.ShortcutCreate) (*api.Shortcut, error) { creator_id, ) VALUES (?, ?, ?) - RETURNING id, title, payload, creator_id, created_ts, updated_ts, pinned_ts + RETURNING id, title, payload, creator_id, created_ts, updated_ts, row_status `, create.Title, create.Payload, @@ -93,7 +93,7 @@ func createShortcut(db *DB, create *api.ShortcutCreate) (*api.Shortcut, error) { &shortcut.CreatorId, &shortcut.CreatedTs, &shortcut.UpdatedTs, - &shortcut.PinnedTs, + &shortcut.RowStatus, ); err != nil { return nil, FormatError(err) } @@ -109,8 +109,8 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*api.Shortcut, error) { if v := patch.Payload; v != nil { set, args = append(set, "payload = ?"), append(args, *v) } - if v := patch.PinnedTs; v != nil { - set, args = append(set, "pinned_ts = ?"), append(args, *v) + if v := patch.RowStatus; v != nil { + set, args = append(set, "row_status = ?"), append(args, *v) } args = append(args, patch.Id) @@ -119,7 +119,7 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*api.Shortcut, error) { UPDATE shortcut SET `+strings.Join(set, ", ")+` WHERE id = ? - RETURNING id, title, payload, created_ts, updated_ts, pinned_ts + RETURNING id, title, payload, created_ts, updated_ts, row_status `, args...) if err != nil { return nil, FormatError(err) @@ -137,7 +137,7 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*api.Shortcut, error) { &shortcut.Payload, &shortcut.CreatedTs, &shortcut.UpdatedTs, - &shortcut.PinnedTs, + &shortcut.RowStatus, ); err != nil { return nil, FormatError(err) } @@ -166,7 +166,7 @@ func findShortcutList(db *DB, find *api.ShortcutFind) ([]*api.Shortcut, error) { creator_id, created_ts, updated_ts, - pinned_ts + row_status FROM shortcut WHERE `+strings.Join(where, " AND "), args..., @@ -186,7 +186,7 @@ func findShortcutList(db *DB, find *api.ShortcutFind) ([]*api.Shortcut, error) { &shortcut.CreatorId, &shortcut.CreatedTs, &shortcut.UpdatedTs, - &shortcut.PinnedTs, + &shortcut.RowStatus, ); err != nil { return nil, FormatError(err) }