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
ff04fdc4
Commit
ff04fdc4
authored
Feb 03, 2025
by
johnnyjoy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: support more operators in filter
parent
03189ee3
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
2 deletions
+59
-2
memo_filter.go
store/db/mysql/memo_filter.go
+19
-0
memo_filter.go
store/db/postgres/memo_filter.go
+20
-1
memo_filter.go
store/db/sqlite/memo_filter.go
+20
-1
No files found.
store/db/mysql/memo_filter.go
View file @
ff04fdc4
...
...
@@ -102,6 +102,25 @@ func ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) error {
return
err
}
ctx
.
Args
=
append
(
ctx
.
Args
,
timestamp
.
Unix
())
}
else
if
identifier
==
"visibility"
||
identifier
==
"content"
{
if
operator
!=
"="
&&
operator
!=
"!="
{
return
errors
.
Errorf
(
"invalid operator for %s"
,
v
.
CallExpr
.
Function
)
}
valueStr
,
ok
:=
value
.
(
string
)
if
!
ok
{
return
errors
.
New
(
"invalid string value"
)
}
var
factor
string
if
identifier
==
"visibility"
{
factor
=
"`memo`.`visibility`"
}
else
if
identifier
==
"content"
{
factor
=
"`memo`.`content`"
}
if
_
,
err
:=
ctx
.
Buffer
.
WriteString
(
fmt
.
Sprintf
(
"%s %s ?"
,
factor
,
operator
));
err
!=
nil
{
return
err
}
ctx
.
Args
=
append
(
ctx
.
Args
,
valueStr
)
}
case
"@in"
:
if
len
(
v
.
CallExpr
.
Args
)
!=
2
{
...
...
store/db/postgres/memo_filter.go
View file @
ff04fdc4
...
...
@@ -59,7 +59,7 @@ func ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) error {
if
err
!=
nil
{
return
err
}
if
!
slices
.
Contains
([]
string
{
"create_time"
,
"update_time"
},
identifier
)
{
if
!
slices
.
Contains
([]
string
{
"create_time"
,
"update_time"
,
"visibility"
,
"content"
},
identifier
)
{
return
errors
.
Errorf
(
"invalid identifier for %s"
,
v
.
CallExpr
.
Function
)
}
value
,
err
:=
filter
.
GetConstValue
(
v
.
CallExpr
.
Args
[
1
])
...
...
@@ -102,6 +102,25 @@ func ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) error {
return
err
}
ctx
.
Args
=
append
(
ctx
.
Args
,
timestamp
.
Unix
())
}
else
if
identifier
==
"visibility"
||
identifier
==
"content"
{
if
operator
!=
"="
&&
operator
!=
"!="
{
return
errors
.
Errorf
(
"invalid operator for %s"
,
v
.
CallExpr
.
Function
)
}
valueStr
,
ok
:=
value
.
(
string
)
if
!
ok
{
return
errors
.
New
(
"invalid string value"
)
}
var
factor
string
if
identifier
==
"visibility"
{
factor
=
"memo.visibility"
}
else
if
identifier
==
"content"
{
factor
=
"memo.content"
}
if
_
,
err
:=
ctx
.
Buffer
.
WriteString
(
fmt
.
Sprintf
(
"%s %s %s"
,
factor
,
operator
,
placeholder
(
len
(
ctx
.
Args
)
+
ctx
.
ArgsOffset
+
1
)));
err
!=
nil
{
return
err
}
ctx
.
Args
=
append
(
ctx
.
Args
,
valueStr
)
}
case
"@in"
:
if
len
(
v
.
CallExpr
.
Args
)
!=
2
{
...
...
store/db/sqlite/memo_filter.go
View file @
ff04fdc4
...
...
@@ -59,7 +59,7 @@ func ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) error {
if
err
!=
nil
{
return
err
}
if
!
slices
.
Contains
([]
string
{
"create_time"
,
"update_time"
},
identifier
)
{
if
!
slices
.
Contains
([]
string
{
"create_time"
,
"update_time"
,
"visibility"
,
"content"
},
identifier
)
{
return
errors
.
Errorf
(
"invalid identifier for %s"
,
v
.
CallExpr
.
Function
)
}
value
,
err
:=
filter
.
GetConstValue
(
v
.
CallExpr
.
Args
[
1
])
...
...
@@ -102,6 +102,25 @@ func ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) error {
return
err
}
ctx
.
Args
=
append
(
ctx
.
Args
,
timestamp
.
Unix
())
}
else
if
identifier
==
"visibility"
||
identifier
==
"content"
{
if
operator
!=
"="
&&
operator
!=
"!="
{
return
errors
.
Errorf
(
"invalid operator for %s"
,
v
.
CallExpr
.
Function
)
}
valueStr
,
ok
:=
value
.
(
string
)
if
!
ok
{
return
errors
.
New
(
"invalid string value"
)
}
var
factor
string
if
identifier
==
"visibility"
{
factor
=
"`memo`.`visibility`"
}
else
if
identifier
==
"content"
{
factor
=
"`memo`.`content`"
}
if
_
,
err
:=
ctx
.
Buffer
.
WriteString
(
fmt
.
Sprintf
(
"%s %s ?"
,
factor
,
operator
));
err
!=
nil
{
return
err
}
ctx
.
Args
=
append
(
ctx
.
Args
,
valueStr
)
}
case
"@in"
:
if
len
(
v
.
CallExpr
.
Args
)
!=
2
{
...
...
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