Skip to content

Commit d661134

Browse files
committed
refactor: backend
1 parent 3d8997a commit d661134

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2587
-1275
lines changed

Dockerfile

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,16 @@ COPY . .
1717

1818
RUN go build \
1919
-o memos \
20-
./server/main.go
20+
./bin/server/main.go
2121

2222
# Make workspace with above generated files.
2323
FROM alpine:3.14.3 AS monolithic
2424
WORKDIR /usr/local/memos
2525

26-
RUN apk add --no-cache tzdata
27-
ENV TZ="Asia/Shanghai"
26+
# RUN apk add --no-cache tzdata
27+
# ENV TZ="Asia/Shanghai"
2828

2929
COPY --from=backend /backend-build/memos /usr/local/memos/
30-
# Copy default resources, like db file.
31-
COPY --from=backend /backend-build/resources /usr/local/memos/resources
3230
COPY --from=frontend /frontend-build/dist /usr/local/memos/web/dist
3331

3432
CMD ["./memos"]

api/auth.go

Lines changed: 6 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,11 @@
11
package api
22

3-
import (
4-
"encoding/json"
5-
"memos/api/e"
6-
"memos/store"
7-
"net/http"
8-
9-
"github.com/gorilla/mux"
10-
)
11-
12-
func handleUserSignUp(w http.ResponseWriter, r *http.Request) {
13-
type UserSignUpDataBody struct {
14-
Username string `json:"username"`
15-
Password string `json:"password"`
16-
}
17-
18-
userSignup := UserSignUpDataBody{}
19-
err := json.NewDecoder(r.Body).Decode(&userSignup)
20-
21-
if err != nil {
22-
e.ErrorHandler(w, "REQUEST_BODY_ERROR", "Bad request")
23-
return
24-
}
25-
26-
usernameUsable, _ := store.CheckUsernameUsable(userSignup.Username)
27-
if !usernameUsable {
28-
json.NewEncoder(w).Encode(Response{
29-
Succeed: false,
30-
Message: "Username is existed",
31-
Data: nil,
32-
})
33-
return
34-
}
35-
36-
user, err := store.CreateNewUser(userSignup.Username, userSignup.Password)
37-
38-
if err != nil {
39-
e.ErrorHandler(w, "DATABASE_ERROR", err.Error())
40-
return
41-
}
42-
43-
session, _ := SessionStore.Get(r, "session")
44-
45-
session.Values["user_id"] = user.Id
46-
session.Save(r, w)
47-
48-
json.NewEncoder(w).Encode(Response{
49-
Succeed: true,
50-
Message: "",
51-
Data: user,
52-
})
3+
type Login struct {
4+
Name string
5+
Password string
536
}
547

55-
func handleUserSignIn(w http.ResponseWriter, r *http.Request) {
56-
type UserSigninDataBody struct {
57-
Username string `json:"username"`
58-
Password string `json:"password"`
59-
}
60-
61-
userSignin := UserSigninDataBody{}
62-
err := json.NewDecoder(r.Body).Decode(&userSignin)
63-
64-
if err != nil {
65-
e.ErrorHandler(w, "REQUEST_BODY_ERROR", "Bad request")
66-
return
67-
}
68-
69-
user, err := store.GetUserByUsernameAndPassword(userSignin.Username, userSignin.Password)
70-
71-
if err != nil {
72-
json.NewEncoder(w).Encode(Response{
73-
Succeed: false,
74-
Message: "Username and password not allowed",
75-
Data: nil,
76-
})
77-
return
78-
}
79-
80-
session, _ := SessionStore.Get(r, "session")
81-
82-
session.Values["user_id"] = user.Id
83-
session.Save(r, w)
84-
85-
json.NewEncoder(w).Encode(Response{
86-
Succeed: true,
87-
Message: "",
88-
Data: user,
89-
})
90-
}
91-
92-
func handleUserSignOut(w http.ResponseWriter, r *http.Request) {
93-
session, _ := SessionStore.Get(r, "session")
94-
95-
session.Values["user_id"] = ""
96-
session.Save(r, w)
97-
98-
json.NewEncoder(w).Encode(Response{
99-
Succeed: true,
100-
Message: "",
101-
Data: nil,
102-
})
103-
}
104-
105-
func RegisterAuthRoutes(r *mux.Router) {
106-
authRouter := r.PathPrefix("/api/auth").Subrouter()
107-
108-
authRouter.Use(JSONResponseMiddleWare)
109-
110-
authRouter.HandleFunc("/signup", handleUserSignUp).Methods("POST")
111-
authRouter.HandleFunc("/signin", handleUserSignIn).Methods("POST")
112-
authRouter.HandleFunc("/signout", handleUserSignOut).Methods("POST")
8+
type Signup struct {
9+
Name string
10+
Password string
11311
}

api/e/codes.go

Lines changed: 0 additions & 14 deletions
This file was deleted.

api/e/error.go

Lines changed: 0 additions & 50 deletions
This file was deleted.

api/memo.go

Lines changed: 28 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,41 @@
11
package api
22

3-
import (
4-
"encoding/json"
5-
"memos/api/e"
6-
"memos/store"
7-
"net/http"
8-
9-
"github.com/gorilla/mux"
10-
)
11-
12-
func handleGetMyMemos(w http.ResponseWriter, r *http.Request) {
13-
userId, _ := GetUserIdInSession(r)
14-
urlParams := r.URL.Query()
15-
deleted := urlParams.Get("deleted")
16-
onlyDeletedFlag := deleted == "true"
17-
18-
memos, err := store.GetMemosByUserId(userId, onlyDeletedFlag)
19-
20-
if err != nil {
21-
e.ErrorHandler(w, "DATABASE_ERROR", err.Error())
22-
return
23-
}
24-
25-
json.NewEncoder(w).Encode(Response{
26-
Succeed: true,
27-
Message: "",
28-
Data: memos,
29-
})
3+
type Memo struct {
4+
Id int `jsonapi:"primary,memo"`
5+
CreatedTs int64 `jsonapi:"attr,createdTs"`
6+
UpdatedTs int64 `jsonapi:"attr,updatedTs"`
7+
RowStatus string `jsonapi:"attr,rowStatus"`
8+
9+
Content string `jsonapi:"attr,content"`
10+
CreatorId int `jsonapi:"attr,creatorId"`
3011
}
3112

32-
func handleCreateMemo(w http.ResponseWriter, r *http.Request) {
33-
userId, _ := GetUserIdInSession(r)
34-
35-
type CreateMemoDataBody struct {
36-
Content string `json:"content"`
37-
}
38-
39-
createMemo := CreateMemoDataBody{}
40-
err := json.NewDecoder(r.Body).Decode(&createMemo)
41-
42-
if err != nil {
43-
e.ErrorHandler(w, "REQUEST_BODY_ERROR", "Bad request")
44-
return
45-
}
46-
47-
memo, err := store.CreateNewMemo(createMemo.Content, userId)
48-
49-
if err != nil {
50-
e.ErrorHandler(w, "DATABASE_ERROR", err.Error())
51-
return
52-
}
53-
54-
json.NewEncoder(w).Encode(Response{
55-
Succeed: true,
56-
Message: "",
57-
Data: memo,
58-
})
13+
type MemoCreate struct {
14+
Content string `jsonapi:"attr,content"`
15+
CreatorId int
5916
}
6017

61-
func handleUpdateMemo(w http.ResponseWriter, r *http.Request) {
62-
vars := mux.Vars(r)
63-
memoId := vars["id"]
64-
65-
memoPatch := store.MemoPatch{}
66-
err := json.NewDecoder(r.Body).Decode(&memoPatch)
67-
68-
if err != nil {
69-
e.ErrorHandler(w, "REQUEST_BODY_ERROR", "Bad request")
70-
return
71-
}
72-
73-
memo, err := store.UpdateMemo(memoId, &memoPatch)
74-
75-
if err != nil {
76-
e.ErrorHandler(w, "DATABASE_ERROR", err.Error())
77-
return
78-
}
18+
type MemoPatch struct {
19+
Id int
7920

80-
json.NewEncoder(w).Encode(Response{
81-
Succeed: true,
82-
Message: "",
83-
Data: memo,
84-
})
21+
Content *string
22+
RowStatus *string
8523
}
8624

87-
func handleDeleteMemo(w http.ResponseWriter, r *http.Request) {
88-
vars := mux.Vars(r)
89-
memoId := vars["id"]
90-
91-
err := store.DeleteMemo(memoId)
92-
93-
if err != nil {
94-
e.ErrorHandler(w, "DATABASE_ERROR", err.Error())
95-
return
96-
}
97-
98-
json.NewEncoder(w).Encode(Response{
99-
Succeed: true,
100-
Message: "",
101-
Data: nil,
102-
})
25+
type MemoFind struct {
26+
Id *int
27+
CreatorId *int
10328
}
10429

105-
func RegisterMemoRoutes(r *mux.Router) {
106-
memoRouter := r.PathPrefix("/api/memo").Subrouter()
107-
108-
memoRouter.Use(JSONResponseMiddleWare)
109-
memoRouter.Use(AuthCheckerMiddleWare)
30+
type MemoDelete struct {
31+
Id *int `jsonapi:"primary,memo"`
32+
CreatorId *int
33+
}
11034

111-
memoRouter.HandleFunc("/all", handleGetMyMemos).Methods("GET")
112-
memoRouter.HandleFunc("/", handleCreateMemo).Methods("PUT")
113-
memoRouter.HandleFunc("/{id}", handleUpdateMemo).Methods("PATCH")
114-
memoRouter.HandleFunc("/{id}", handleDeleteMemo).Methods("DELETE")
35+
type MemoService interface {
36+
CreateMemo(create *MemoCreate) (*Memo, error)
37+
PatchMemo(patch *MemoPatch) (*Memo, error)
38+
FindMemoList(find *MemoFind) ([]*Memo, error)
39+
FindMemo(find *MemoFind) (*Memo, error)
40+
DeleteMemo(delete *MemoDelete) error
11541
}

api/middlewares.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)