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
eb4f7b47
Commit
eb4f7b47
authored
Feb 04, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: update memo find builder
parent
1e07b70d
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
49 additions
and
82 deletions
+49
-82
memo_service.go
api/v2/memo_service.go
+49
-82
No files found.
api/v2/memo_service.go
View file @
eb4f7b47
...
@@ -82,9 +82,12 @@ func (s *APIV2Service) CreateMemo(ctx context.Context, request *apiv2pb.CreateMe
...
@@ -82,9 +82,12 @@ func (s *APIV2Service) CreateMemo(ctx context.Context, request *apiv2pb.CreateMe
}
}
func
(
s
*
APIV2Service
)
ListMemos
(
ctx
context
.
Context
,
request
*
apiv2pb
.
ListMemosRequest
)
(
*
apiv2pb
.
ListMemosResponse
,
error
)
{
func
(
s
*
APIV2Service
)
ListMemos
(
ctx
context
.
Context
,
request
*
apiv2pb
.
ListMemosRequest
)
(
*
apiv2pb
.
ListMemosResponse
,
error
)
{
memoFind
,
err
:=
s
.
buildFindMemosWithFilter
(
ctx
,
request
.
Filter
,
true
)
memoFind
:=
&
store
.
FindMemo
{
if
err
!=
nil
{
// Exclude comments by default.
return
nil
,
err
ExcludeComments
:
true
,
}
if
err
:=
s
.
buildMemoFindWithFilter
(
ctx
,
memoFind
,
request
.
Filter
);
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"failed to build find memos with filter"
)
}
}
var
limit
,
offset
int
var
limit
,
offset
int
...
@@ -435,52 +438,8 @@ func (s *APIV2Service) GetUserMemosStats(ctx context.Context, request *apiv2pb.G
...
@@ -435,52 +438,8 @@ func (s *APIV2Service) GetUserMemosStats(ctx context.Context, request *apiv2pb.G
ExcludeComments
:
true
,
ExcludeComments
:
true
,
ExcludeContent
:
true
,
ExcludeContent
:
true
,
}
}
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
:=
s
.
buildMemoFindWithFilter
(
ctx
,
memoFind
,
request
.
Filter
);
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"failed to build find memos with filter"
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
if
displayWithUpdatedTs
{
memoFind
.
OrderByUpdatedTs
=
true
}
if
request
.
Filter
!=
""
{
filter
,
err
:=
parseListMemosFilter
(
request
.
Filter
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid filter: %v"
,
err
)
}
if
len
(
filter
.
ContentSearch
)
>
0
{
memoFind
.
ContentSearch
=
filter
.
ContentSearch
}
if
len
(
filter
.
Visibilities
)
>
0
{
memoFind
.
VisibilityList
=
filter
.
Visibilities
}
if
filter
.
OrderByPinned
{
memoFind
.
OrderByPinned
=
filter
.
OrderByPinned
}
if
filter
.
DisplayTimeAfter
!=
nil
{
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
if
displayWithUpdatedTs
{
memoFind
.
UpdatedTsAfter
=
filter
.
DisplayTimeAfter
}
else
{
memoFind
.
CreatedTsAfter
=
filter
.
DisplayTimeAfter
}
}
if
filter
.
DisplayTimeBefore
!=
nil
{
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
if
displayWithUpdatedTs
{
memoFind
.
UpdatedTsBefore
=
filter
.
DisplayTimeBefore
}
else
{
memoFind
.
CreatedTsBefore
=
filter
.
DisplayTimeBefore
}
}
if
filter
.
RowStatus
!=
nil
{
memoFind
.
RowStatus
=
filter
.
RowStatus
}
}
}
memos
,
err
:=
s
.
Store
.
ListMemos
(
ctx
,
memoFind
)
memos
,
err
:=
s
.
Store
.
ListMemos
(
ctx
,
memoFind
)
...
@@ -493,6 +452,10 @@ func (s *APIV2Service) GetUserMemosStats(ctx context.Context, request *apiv2pb.G
...
@@ -493,6 +452,10 @@ func (s *APIV2Service) GetUserMemosStats(ctx context.Context, request *apiv2pb.G
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"invalid timezone location"
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"invalid timezone location"
)
}
}
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
stats
:=
make
(
map
[
string
]
int32
)
stats
:=
make
(
map
[
string
]
int32
)
for
_
,
memo
:=
range
memos
{
for
_
,
memo
:=
range
memos
{
displayTs
:=
memo
.
CreatedTs
displayTs
:=
memo
.
CreatedTs
...
@@ -509,8 +472,13 @@ func (s *APIV2Service) GetUserMemosStats(ctx context.Context, request *apiv2pb.G
...
@@ -509,8 +472,13 @@ func (s *APIV2Service) GetUserMemosStats(ctx context.Context, request *apiv2pb.G
}
}
func
(
s
*
APIV2Service
)
ExportMemos
(
ctx
context
.
Context
,
request
*
apiv2pb
.
ExportMemosRequest
)
(
*
apiv2pb
.
ExportMemosResponse
,
error
)
{
func
(
s
*
APIV2Service
)
ExportMemos
(
ctx
context
.
Context
,
request
*
apiv2pb
.
ExportMemosRequest
)
(
*
apiv2pb
.
ExportMemosResponse
,
error
)
{
memoFind
,
err
:=
s
.
buildFindMemosWithFilter
(
ctx
,
request
.
Filter
,
true
)
normalRowStatus
:=
store
.
Normal
if
err
!=
nil
{
memoFind
:=
&
store
.
FindMemo
{
RowStatus
:
&
normalRowStatus
,
// Exclude comments by default.
ExcludeComments
:
true
,
}
if
err
:=
s
.
buildMemoFindWithFilter
(
ctx
,
memoFind
,
request
.
Filter
);
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to build find memos with filter"
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to build find memos with filter"
)
}
}
...
@@ -521,7 +489,6 @@ func (s *APIV2Service) ExportMemos(ctx context.Context, request *apiv2pb.ExportM
...
@@ -521,7 +489,6 @@ func (s *APIV2Service) ExportMemos(ctx context.Context, request *apiv2pb.ExportM
buf
:=
new
(
bytes
.
Buffer
)
buf
:=
new
(
bytes
.
Buffer
)
writer
:=
zip
.
NewWriter
(
buf
)
writer
:=
zip
.
NewWriter
(
buf
)
for
_
,
memo
:=
range
memos
{
for
_
,
memo
:=
range
memos
{
memoMessage
,
err
:=
s
.
convertMemoFromStore
(
ctx
,
memo
)
memoMessage
,
err
:=
s
.
convertMemoFromStore
(
ctx
,
memo
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -536,9 +503,7 @@ func (s *APIV2Service) ExportMemos(ctx context.Context, request *apiv2pb.ExportM
...
@@ -536,9 +503,7 @@ func (s *APIV2Service) ExportMemos(ctx context.Context, request *apiv2pb.ExportM
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"Failed to write to memo file"
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"Failed to write to memo file"
)
}
}
}
}
if
err
:=
writer
.
Close
();
err
!=
nil
{
err
=
writer
.
Close
()
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"Failed to close zip file writer"
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"Failed to close zip file writer"
)
}
}
...
@@ -768,88 +733,90 @@ func (s *APIV2Service) dispatchMemoRelatedWebhook(ctx context.Context, memo *api
...
@@ -768,88 +733,90 @@ func (s *APIV2Service) dispatchMemoRelatedWebhook(ctx context.Context, memo *api
return
nil
return
nil
}
}
func
(
s
*
APIV2Service
)
build
FindMemosWithFilter
(
ctx
context
.
Context
,
filter
string
,
excludeComments
bool
)
(
*
store
.
FindMemo
,
error
)
{
func
(
s
*
APIV2Service
)
build
MemoFindWithFilter
(
ctx
context
.
Context
,
find
*
store
.
FindMemo
,
filter
string
)
error
{
memoFind
:=
&
store
.
FindMemo
{
user
,
_
:=
getCurrentUser
(
ctx
,
s
.
Store
)
// Exclude comments by default.
if
find
==
nil
{
ExcludeComments
:
excludeComments
,
find
=
&
store
.
FindMemo
{}
}
}
if
filter
!=
""
{
if
filter
!=
""
{
filter
,
err
:=
parseListMemosFilter
(
filter
)
filter
,
err
:=
parseListMemosFilter
(
filter
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid filter: %v"
,
err
)
return
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid filter: %v"
,
err
)
}
}
if
len
(
filter
.
ContentSearch
)
>
0
{
if
len
(
filter
.
ContentSearch
)
>
0
{
memoF
ind
.
ContentSearch
=
filter
.
ContentSearch
f
ind
.
ContentSearch
=
filter
.
ContentSearch
}
}
if
len
(
filter
.
Visibilities
)
>
0
{
if
len
(
filter
.
Visibilities
)
>
0
{
memoF
ind
.
VisibilityList
=
filter
.
Visibilities
f
ind
.
VisibilityList
=
filter
.
Visibilities
}
}
if
filter
.
OrderByPinned
{
if
filter
.
OrderByPinned
{
memoF
ind
.
OrderByPinned
=
filter
.
OrderByPinned
f
ind
.
OrderByPinned
=
filter
.
OrderByPinned
}
}
if
filter
.
DisplayTimeAfter
!=
nil
{
if
filter
.
DisplayTimeAfter
!=
nil
{
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
return
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
}
if
displayWithUpdatedTs
{
if
displayWithUpdatedTs
{
memoF
ind
.
UpdatedTsAfter
=
filter
.
DisplayTimeAfter
f
ind
.
UpdatedTsAfter
=
filter
.
DisplayTimeAfter
}
else
{
}
else
{
memoF
ind
.
CreatedTsAfter
=
filter
.
DisplayTimeAfter
f
ind
.
CreatedTsAfter
=
filter
.
DisplayTimeAfter
}
}
}
}
if
filter
.
DisplayTimeBefore
!=
nil
{
if
filter
.
DisplayTimeBefore
!=
nil
{
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
return
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
}
if
displayWithUpdatedTs
{
if
displayWithUpdatedTs
{
memoF
ind
.
UpdatedTsBefore
=
filter
.
DisplayTimeBefore
f
ind
.
UpdatedTsBefore
=
filter
.
DisplayTimeBefore
}
else
{
}
else
{
memoF
ind
.
CreatedTsBefore
=
filter
.
DisplayTimeBefore
f
ind
.
CreatedTsBefore
=
filter
.
DisplayTimeBefore
}
}
}
}
if
filter
.
Creator
!=
nil
{
if
filter
.
Creator
!=
nil
{
username
,
err
:=
ExtractUsernameFromName
(
*
filter
.
Creator
)
username
,
err
:=
ExtractUsernameFromName
(
*
filter
.
Creator
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid creator name"
)
return
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid creator name"
)
}
}
user
,
err
:=
s
.
Store
.
GetUser
(
ctx
,
&
store
.
FindUser
{
user
,
err
:=
s
.
Store
.
GetUser
(
ctx
,
&
store
.
FindUser
{
Username
:
&
username
,
Username
:
&
username
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get user"
)
return
status
.
Errorf
(
codes
.
Internal
,
"failed to get user"
)
}
}
if
user
==
nil
{
if
user
==
nil
{
return
nil
,
status
.
Errorf
(
codes
.
NotFound
,
"user not found"
)
return
status
.
Errorf
(
codes
.
NotFound
,
"user not found"
)
}
}
memoF
ind
.
CreatorID
=
&
user
.
ID
f
ind
.
CreatorID
=
&
user
.
ID
}
}
if
filter
.
RowStatus
!=
nil
{
if
filter
.
RowStatus
!=
nil
{
memoF
ind
.
RowStatus
=
filter
.
RowStatus
f
ind
.
RowStatus
=
filter
.
RowStatus
}
}
}
else
{
}
else
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"filter is required"
)
// If no filter is provided, check if the user is authenticated.
if
user
==
nil
{
return
status
.
Errorf
(
codes
.
InvalidArgument
,
"filter is required"
)
}
}
}
user
,
_
:=
getCurrentUser
(
ctx
,
s
.
Store
)
// If the user is not authenticated, only public memos are visible.
// If the user is not authenticated, only public memos are visible.
if
user
==
nil
{
if
user
==
nil
{
memoF
ind
.
VisibilityList
=
[]
store
.
Visibility
{
store
.
Public
}
f
ind
.
VisibilityList
=
[]
store
.
Visibility
{
store
.
Public
}
}
}
if
user
!=
nil
&&
memoFind
.
CreatorID
!=
nil
&&
*
memoF
ind
.
CreatorID
!=
user
.
ID
{
if
user
!=
nil
&&
find
.
CreatorID
!=
nil
&&
*
f
ind
.
CreatorID
!=
user
.
ID
{
memoF
ind
.
VisibilityList
=
[]
store
.
Visibility
{
store
.
Public
,
store
.
Protected
}
f
ind
.
VisibilityList
=
[]
store
.
Visibility
{
store
.
Public
,
store
.
Protected
}
}
}
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
displayWithUpdatedTs
,
err
:=
s
.
getMemoDisplayWithUpdatedTsSettingValue
(
ctx
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
return
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo display with updated ts setting value"
)
}
}
if
displayWithUpdatedTs
{
if
displayWithUpdatedTs
{
memoF
ind
.
OrderByUpdatedTs
=
true
f
ind
.
OrderByUpdatedTs
=
true
}
}
return
memoFind
,
nil
return
nil
}
}
func
convertMemoToWebhookPayload
(
memo
*
apiv2pb
.
Memo
)
*
webhook
.
WebhookPayload
{
func
convertMemoToWebhookPayload
(
memo
*
apiv2pb
.
Memo
)
*
webhook
.
WebhookPayload
{
...
...
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