mirror of
https://github.com/usememos/memos.git
synced 2024-09-20 14:35:54 +08:00
chore: update memo list api (#350)
This commit is contained in:
parent
bdf6d4d42a
commit
94df09c8c0
|
@ -28,3 +28,10 @@ func ValidateEmail(email string) bool {
|
|||
func GenUUID() string {
|
||||
return uuid.New().String()
|
||||
}
|
||||
|
||||
func Min(x, y int) int {
|
||||
if x < y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
|
|
@ -193,8 +193,18 @@ func (s *Server) registerMemoRoutes(g *echo.Group) {
|
|||
}
|
||||
|
||||
sort.Slice(list, func(i, j int) bool {
|
||||
return list[i].DisplayTs > list[j].DisplayTs
|
||||
return list[i].DisplayTs < list[j].DisplayTs
|
||||
})
|
||||
sort.Slice(list, func(i, j int) bool {
|
||||
if !list[i].Pinned && list[j].Pinned {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
if memoFind.Limit != 0 {
|
||||
list = list[memoFind.Offset:common.Min(len(list), memoFind.Offset+memoFind.Limit)]
|
||||
}
|
||||
|
||||
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
|
||||
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(list)); err != nil {
|
||||
|
|
|
@ -329,14 +329,6 @@ func findMemoRawList(ctx context.Context, tx *sql.Tx, find *api.MemoFind) ([]*me
|
|||
where = append(where, fmt.Sprintf("visibility in (%s)", strings.Join(list, ",")))
|
||||
}
|
||||
|
||||
pagination := ""
|
||||
if find.Limit > 0 {
|
||||
pagination = fmt.Sprintf("%s LIMIT %d", pagination, find.Limit)
|
||||
if find.Offset > 0 {
|
||||
pagination = fmt.Sprintf("%s OFFSET %d", pagination, find.Offset)
|
||||
}
|
||||
}
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
id,
|
||||
|
@ -349,7 +341,7 @@ func findMemoRawList(ctx context.Context, tx *sql.Tx, find *api.MemoFind) ([]*me
|
|||
FROM memo
|
||||
WHERE ` + strings.Join(where, " AND ") + `
|
||||
ORDER BY created_ts DESC
|
||||
` + pagination
|
||||
`
|
||||
rows, err := tx.QueryContext(ctx, query, args...)
|
||||
if err != nil {
|
||||
return nil, FormatError(err)
|
||||
|
|
|
@ -78,6 +78,9 @@ export function getMemoList(memoFind?: MemoFind) {
|
|||
if (memoFind?.rowStatus) {
|
||||
queryList.push(`rowStatus=${memoFind.rowStatus}`);
|
||||
}
|
||||
if (memoFind?.pinned) {
|
||||
queryList.push(`pinned=${memoFind.pinned}`);
|
||||
}
|
||||
if (memoFind?.offset) {
|
||||
queryList.push(`offset=${memoFind.offset}`);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { uniqBy } from "lodash";
|
||||
import * as api from "../helpers/api";
|
||||
import { createMemo, deleteMemo, patchMemo, setIsFetching, setMemos, setTags } from "../store/modules/memo";
|
||||
import store from "../store";
|
||||
|
@ -35,7 +36,7 @@ const memoService = {
|
|||
store.dispatch(setMemos([]));
|
||||
}
|
||||
const memos = memoService.getState().memos;
|
||||
store.dispatch(setMemos(memos.concat(fetchedMemos)));
|
||||
store.dispatch(setMemos(uniqBy(memos.concat(fetchedMemos), "id")));
|
||||
store.dispatch(setIsFetching(false));
|
||||
|
||||
return fetchedMemos;
|
||||
|
|
|
@ -18,7 +18,7 @@ const memoSlice = createSlice({
|
|||
setMemos: (state, action: PayloadAction<Memo[]>) => {
|
||||
return {
|
||||
...state,
|
||||
memos: action.payload.filter((m) => m.rowStatus === "NORMAL"),
|
||||
memos: action.payload,
|
||||
};
|
||||
},
|
||||
createMemo: (state, action: PayloadAction<Memo>) => {
|
||||
|
|
1
web/src/types/modules/memo.d.ts
vendored
1
web/src/types/modules/memo.d.ts
vendored
|
@ -37,6 +37,7 @@ interface MemoPatch {
|
|||
interface MemoFind {
|
||||
creatorId?: UserId;
|
||||
rowStatus?: RowStatus;
|
||||
pinned?: boolean;
|
||||
visibility?: Visibility;
|
||||
offset?: number;
|
||||
limit?: number;
|
||||
|
|
Loading…
Reference in a new issue