Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
ae8f2923
Commit
ae8f2923
authored
Oct 01, 2022
by
steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: create memo with resourceIdList
parent
9f8c0ce5
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
31 additions
and
14 deletions
+31
-14
memo.go
api/memo.go
+3
-0
memo.go
server/memo.go
+14
-0
memo.go
store/memo.go
+6
-8
MemoEditor.tsx
web/src/components/MemoEditor.tsx
+2
-4
memoService.ts
web/src/services/memoService.ts
+5
-2
memo.d.ts
web/src/types/modules/memo.d.ts
+1
-0
No files found.
api/memo.go
View file @
ae8f2923
...
...
@@ -50,6 +50,9 @@ type MemoCreate struct {
// Domain specific fields
Visibility
Visibility
`json:"visibility"`
Content
string
`json:"content"`
// Related fields
ResourceIDList
[]
int
`json:"resourceIdList"`
}
type
MemoPatch
struct
{
...
...
server/memo.go
View file @
ae8f2923
...
...
@@ -56,6 +56,20 @@ func (s *Server) registerMemoRoutes(g *echo.Group) {
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to create memo"
)
.
SetInternal
(
err
)
}
for
_
,
resourceID
:=
range
memoCreate
.
ResourceIDList
{
if
_
,
err
:=
s
.
Store
.
UpsertMemoResource
(
ctx
,
&
api
.
MemoResourceUpsert
{
MemoID
:
memo
.
ID
,
ResourceID
:
resourceID
,
});
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to upsert memo resource"
)
.
SetInternal
(
err
)
}
}
memo
,
err
=
s
.
Store
.
ComposeMemo
(
ctx
,
memo
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to compose memo"
)
.
SetInternal
(
err
)
}
c
.
Response
()
.
Header
()
.
Set
(
echo
.
HeaderContentType
,
echo
.
MIMEApplicationJSONCharsetUTF8
)
if
err
:=
json
.
NewEncoder
(
c
.
Response
()
.
Writer
)
.
Encode
(
composeResponse
(
memo
));
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to encode memo response"
)
.
SetInternal
(
err
)
...
...
store/memo.go
View file @
ae8f2923
...
...
@@ -44,9 +44,7 @@ func (raw *memoRaw) toMemo() *api.Memo {
}
}
func
(
s
*
Store
)
composeMemo
(
ctx
context
.
Context
,
raw
*
memoRaw
)
(
*
api
.
Memo
,
error
)
{
memo
:=
raw
.
toMemo
()
func
(
s
*
Store
)
ComposeMemo
(
ctx
context
.
Context
,
memo
*
api
.
Memo
)
(
*
api
.
Memo
,
error
)
{
memoOrganizer
,
err
:=
s
.
FindMemoOrganizer
(
ctx
,
&
api
.
MemoOrganizerFind
{
MemoID
:
memo
.
ID
,
UserID
:
memo
.
CreatorID
,
...
...
@@ -87,7 +85,7 @@ func (s *Store) CreateMemo(ctx context.Context, create *api.MemoCreate) (*api.Me
return
nil
,
err
}
memo
,
err
:=
s
.
composeMemo
(
ctx
,
memoRaw
)
memo
,
err
:=
s
.
ComposeMemo
(
ctx
,
memoRaw
.
toMemo
()
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -115,7 +113,7 @@ func (s *Store) PatchMemo(ctx context.Context, patch *api.MemoPatch) (*api.Memo,
return
nil
,
err
}
memo
,
err
:=
s
.
composeMemo
(
ctx
,
memoRaw
)
memo
,
err
:=
s
.
ComposeMemo
(
ctx
,
memoRaw
.
toMemo
()
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -137,7 +135,7 @@ func (s *Store) FindMemoList(ctx context.Context, find *api.MemoFind) ([]*api.Me
list
:=
[]
*
api
.
Memo
{}
for
_
,
raw
:=
range
memoRawList
{
memo
,
err
:=
s
.
composeMemo
(
ctx
,
raw
)
memo
,
err
:=
s
.
ComposeMemo
(
ctx
,
raw
.
toMemo
()
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -156,7 +154,7 @@ func (s *Store) FindMemo(ctx context.Context, find *api.MemoFind) (*api.Memo, er
return
nil
,
err
}
if
has
{
memo
,
err
:=
s
.
composeMemo
(
ctx
,
memoRaw
)
memo
,
err
:=
s
.
ComposeMemo
(
ctx
,
memoRaw
.
toMemo
()
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -184,7 +182,7 @@ func (s *Store) FindMemo(ctx context.Context, find *api.MemoFind) (*api.Memo, er
return
nil
,
err
}
memo
,
err
:=
s
.
composeMemo
(
ctx
,
memoRaw
)
memo
,
err
:=
s
.
ComposeMemo
(
ctx
,
memoRaw
.
toMemo
()
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
web/src/components/MemoEditor.tsx
View file @
ae8f2923
...
...
@@ -134,12 +134,10 @@ const MemoEditor: React.FC = () => {
}
editorStateService
.
clearEditMemo
();
}
else
{
const
memo
=
await
memoService
.
createMemo
({
await
memoService
.
createMemo
({
content
,
resourceIdList
:
state
.
resourceList
.
map
((
resource
)
=>
resource
.
id
),
});
for
(
const
resource
of
state
.
resourceList
)
{
await
upsertMemoResource
(
memo
.
id
,
resource
.
id
);
}
locationService
.
clearQuery
();
}
}
catch
(
error
:
any
)
{
...
...
web/src/services/memoService.ts
View file @
ae8f2923
...
...
@@ -30,12 +30,14 @@ const memoService = {
const
timeoutIndex
=
setTimeout
(()
=>
{
store
.
dispatch
(
setIsFetching
(
true
));
},
1000
);
const
memoFind
:
MemoFind
=
{};
const
memoFind
:
MemoFind
=
{
rowStatus
:
"NORMAL"
,
};
if
(
userService
.
isVisitorMode
())
{
memoFind
.
creatorId
=
userService
.
getUserIdFromPath
();
}
const
{
data
}
=
(
await
api
.
getMemoList
(
memoFind
)).
data
;
const
memos
=
data
.
filter
((
m
)
=>
m
.
rowStatus
!==
"ARCHIVED"
).
map
((
m
)
=>
convertResponseModelMemo
(
m
));
const
memos
=
data
.
map
((
m
)
=>
convertResponseModelMemo
(
m
));
store
.
dispatch
(
setMemos
(
memos
));
clearTimeout
(
timeoutIndex
);
store
.
dispatch
(
setIsFetching
(
false
));
...
...
@@ -60,6 +62,7 @@ const memoService = {
fetchMemoById
:
async
(
memoId
:
MemoId
)
=>
{
const
{
data
}
=
(
await
api
.
getMemoById
(
memoId
)).
data
;
const
memo
=
convertResponseModelMemo
(
data
);
store
.
dispatch
(
patchMemo
(
memo
));
return
memo
;
},
...
...
web/src/types/modules/memo.d.ts
View file @
ae8f2923
...
...
@@ -20,6 +20,7 @@ interface Memo {
interface
MemoCreate
{
content
:
string
;
resourceIdList
:
ResourceId
[];
visibility
?:
Visibility
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment