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
18b9b9d1
Unverified
Commit
18b9b9d1
authored
Apr 12, 2025
by
Johnny
Committed by
GitHub
Apr 12, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: implement memo filter in list memo relations
parent
08f9b18c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
0 deletions
+38
-0
memo_relation.go
store/db/mysql/memo_relation.go
+19
-0
memo_relation.go
store/db/postgres/memo_relation.go
+19
-0
No files found.
store/db/mysql/memo_relation.go
View file @
18b9b9d1
...
...
@@ -40,6 +40,25 @@ func (d *DB) ListMemoRelations(ctx context.Context, find *store.FindMemoRelation
if
find
.
Type
!=
nil
{
where
,
args
=
append
(
where
,
"`type` = ?"
),
append
(
args
,
find
.
Type
)
}
if
find
.
MemoFilter
!=
nil
{
// Parse filter string and return the parsed expression.
// The filter string should be a CEL expression.
parsedExpr
,
err
:=
filter
.
Parse
(
*
find
.
MemoFilter
,
filter
.
MemoFilterCELAttributes
...
)
if
err
!=
nil
{
return
nil
,
err
}
convertCtx
:=
filter
.
NewConvertContext
()
// ConvertExprToSQL converts the parsed expression to a SQL condition string.
if
err
:=
d
.
ConvertExprToSQL
(
convertCtx
,
parsedExpr
.
GetExpr
());
err
!=
nil
{
return
nil
,
err
}
condition
:=
convertCtx
.
Buffer
.
String
()
if
condition
!=
""
{
where
=
append
(
where
,
fmt
.
Sprintf
(
"memo_id IN (SELECT id FROM memo WHERE %s)"
,
condition
))
where
=
append
(
where
,
fmt
.
Sprintf
(
"related_memo_id IN (SELECT id FROM memo WHERE %s)"
,
condition
))
args
=
append
(
args
,
append
(
convertCtx
.
Args
,
convertCtx
.
Args
...
)
...
)
}
}
rows
,
err
:=
d
.
db
.
QueryContext
(
ctx
,
"SELECT `memo_id`, `related_memo_id`, `type` FROM `memo_relation` WHERE "
+
strings
.
Join
(
where
,
" AND "
),
args
...
)
if
err
!=
nil
{
...
...
store/db/postgres/memo_relation.go
View file @
18b9b9d1
...
...
@@ -46,6 +46,25 @@ func (d *DB) ListMemoRelations(ctx context.Context, find *store.FindMemoRelation
if
find
.
Type
!=
nil
{
where
,
args
=
append
(
where
,
"type = "
+
placeholder
(
len
(
args
)
+
1
)),
append
(
args
,
find
.
Type
)
}
if
find
.
MemoFilter
!=
nil
{
// Parse filter string and return the parsed expression.
// The filter string should be a CEL expression.
parsedExpr
,
err
:=
filter
.
Parse
(
*
find
.
MemoFilter
,
filter
.
MemoFilterCELAttributes
...
)
if
err
!=
nil
{
return
nil
,
err
}
convertCtx
:=
filter
.
NewConvertContext
()
// ConvertExprToSQL converts the parsed expression to a SQL condition string.
if
err
:=
d
.
ConvertExprToSQL
(
convertCtx
,
parsedExpr
.
GetExpr
());
err
!=
nil
{
return
nil
,
err
}
condition
:=
convertCtx
.
Buffer
.
String
()
if
condition
!=
""
{
where
=
append
(
where
,
fmt
.
Sprintf
(
"memo_id IN (SELECT id FROM memo WHERE %s)"
,
condition
))
where
=
append
(
where
,
fmt
.
Sprintf
(
"related_memo_id IN (SELECT id FROM memo WHERE %s)"
,
condition
))
args
=
append
(
args
,
append
(
convertCtx
.
Args
,
convertCtx
.
Args
...
)
...
)
}
}
rows
,
err
:=
d
.
db
.
QueryContext
(
ctx
,
`
SELECT
...
...
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