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
acbde4fb
Unverified
Commit
acbde4fb
authored
Sep 27, 2023
by
Athurg Gooth
Committed by
GitHub
Sep 27, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: move SQL code of MemoRelation into Driver (#2290)
parent
53090a72
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
113 additions
and
90 deletions
+113
-90
driver.go
store/driver.go
+4
-0
memo_relation.go
store/memo_relation.go
+3
-90
memo_relation.go
store/sqlite/memo_relation.go
+106
-0
No files found.
store/driver.go
View file @
acbde4fb
...
@@ -14,6 +14,10 @@ type Driver interface {
...
@@ -14,6 +14,10 @@ type Driver interface {
UpdateResource
(
ctx
context
.
Context
,
update
*
UpdateResource
)
(
*
Resource
,
error
)
UpdateResource
(
ctx
context
.
Context
,
update
*
UpdateResource
)
(
*
Resource
,
error
)
DeleteResource
(
ctx
context
.
Context
,
delete
*
DeleteResource
)
error
DeleteResource
(
ctx
context
.
Context
,
delete
*
DeleteResource
)
error
UpsertMemoRelation
(
ctx
context
.
Context
,
create
*
MemoRelation
)
(
*
MemoRelation
,
error
)
ListMemoRelations
(
ctx
context
.
Context
,
find
*
FindMemoRelation
)
([]
*
MemoRelation
,
error
)
DeleteMemoRelation
(
ctx
context
.
Context
,
delete
*
DeleteMemoRelation
)
error
UpsertSystemSetting
(
ctx
context
.
Context
,
upsert
*
SystemSetting
)
(
*
SystemSetting
,
error
)
UpsertSystemSetting
(
ctx
context
.
Context
,
upsert
*
SystemSetting
)
(
*
SystemSetting
,
error
)
ListSystemSettings
(
ctx
context
.
Context
,
find
*
FindSystemSetting
)
([]
*
SystemSetting
,
error
)
ListSystemSettings
(
ctx
context
.
Context
,
find
*
FindSystemSetting
)
([]
*
SystemSetting
,
error
)
...
...
store/memo_relation.go
View file @
acbde4fb
...
@@ -3,7 +3,6 @@ package store
...
@@ -3,7 +3,6 @@ package store
import
(
import
(
"context"
"context"
"database/sql"
"database/sql"
"strings"
)
)
type
MemoRelationType
string
type
MemoRelationType
string
...
@@ -32,77 +31,11 @@ type DeleteMemoRelation struct {
...
@@ -32,77 +31,11 @@ type DeleteMemoRelation struct {
}
}
func
(
s
*
Store
)
UpsertMemoRelation
(
ctx
context
.
Context
,
create
*
MemoRelation
)
(
*
MemoRelation
,
error
)
{
func
(
s
*
Store
)
UpsertMemoRelation
(
ctx
context
.
Context
,
create
*
MemoRelation
)
(
*
MemoRelation
,
error
)
{
stmt
:=
`
return
s
.
driver
.
UpsertMemoRelation
(
ctx
,
create
)
INSERT INTO memo_relation (
memo_id,
related_memo_id,
type
)
VALUES (?, ?, ?)
ON CONFLICT (memo_id, related_memo_id, type) DO UPDATE SET
type = EXCLUDED.type
RETURNING memo_id, related_memo_id, type
`
memoRelation
:=
&
MemoRelation
{}
if
err
:=
s
.
db
.
QueryRowContext
(
ctx
,
stmt
,
create
.
MemoID
,
create
.
RelatedMemoID
,
create
.
Type
,
)
.
Scan
(
&
memoRelation
.
MemoID
,
&
memoRelation
.
RelatedMemoID
,
&
memoRelation
.
Type
,
);
err
!=
nil
{
return
nil
,
err
}
return
memoRelation
,
nil
}
}
func
(
s
*
Store
)
ListMemoRelations
(
ctx
context
.
Context
,
find
*
FindMemoRelation
)
([]
*
MemoRelation
,
error
)
{
func
(
s
*
Store
)
ListMemoRelations
(
ctx
context
.
Context
,
find
*
FindMemoRelation
)
([]
*
MemoRelation
,
error
)
{
where
,
args
:=
[]
string
{
"TRUE"
},
[]
any
{}
return
s
.
driver
.
ListMemoRelations
(
ctx
,
find
)
if
find
.
MemoID
!=
nil
{
where
,
args
=
append
(
where
,
"memo_id = ?"
),
append
(
args
,
find
.
MemoID
)
}
if
find
.
RelatedMemoID
!=
nil
{
where
,
args
=
append
(
where
,
"related_memo_id = ?"
),
append
(
args
,
find
.
RelatedMemoID
)
}
if
find
.
Type
!=
nil
{
where
,
args
=
append
(
where
,
"type = ?"
),
append
(
args
,
find
.
Type
)
}
rows
,
err
:=
s
.
db
.
QueryContext
(
ctx
,
`
SELECT
memo_id,
related_memo_id,
type
FROM memo_relation
WHERE `
+
strings
.
Join
(
where
,
" AND "
),
args
...
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
list
:=
[]
*
MemoRelation
{}
for
rows
.
Next
()
{
memoRelation
:=
&
MemoRelation
{}
if
err
:=
rows
.
Scan
(
&
memoRelation
.
MemoID
,
&
memoRelation
.
RelatedMemoID
,
&
memoRelation
.
Type
,
);
err
!=
nil
{
return
nil
,
err
}
list
=
append
(
list
,
memoRelation
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
}
return
list
,
nil
}
}
func
(
s
*
Store
)
GetMemoRelation
(
ctx
context
.
Context
,
find
*
FindMemoRelation
)
(
*
MemoRelation
,
error
)
{
func
(
s
*
Store
)
GetMemoRelation
(
ctx
context
.
Context
,
find
*
FindMemoRelation
)
(
*
MemoRelation
,
error
)
{
...
@@ -119,27 +52,7 @@ func (s *Store) GetMemoRelation(ctx context.Context, find *FindMemoRelation) (*M
...
@@ -119,27 +52,7 @@ func (s *Store) GetMemoRelation(ctx context.Context, find *FindMemoRelation) (*M
}
}
func
(
s
*
Store
)
DeleteMemoRelation
(
ctx
context
.
Context
,
delete
*
DeleteMemoRelation
)
error
{
func
(
s
*
Store
)
DeleteMemoRelation
(
ctx
context
.
Context
,
delete
*
DeleteMemoRelation
)
error
{
where
,
args
:=
[]
string
{
"TRUE"
},
[]
any
{}
return
s
.
driver
.
DeleteMemoRelation
(
ctx
,
delete
)
if
delete
.
MemoID
!=
nil
{
where
,
args
=
append
(
where
,
"memo_id = ?"
),
append
(
args
,
delete
.
MemoID
)
}
if
delete
.
RelatedMemoID
!=
nil
{
where
,
args
=
append
(
where
,
"related_memo_id = ?"
),
append
(
args
,
delete
.
RelatedMemoID
)
}
if
delete
.
Type
!=
nil
{
where
,
args
=
append
(
where
,
"type = ?"
),
append
(
args
,
delete
.
Type
)
}
stmt
:=
`
DELETE FROM memo_relation
WHERE `
+
strings
.
Join
(
where
,
" AND "
)
result
,
err
:=
s
.
db
.
ExecContext
(
ctx
,
stmt
,
args
...
)
if
err
!=
nil
{
return
err
}
if
_
,
err
=
result
.
RowsAffected
();
err
!=
nil
{
return
err
}
return
nil
}
}
func
vacuumMemoRelations
(
ctx
context
.
Context
,
tx
*
sql
.
Tx
)
error
{
func
vacuumMemoRelations
(
ctx
context
.
Context
,
tx
*
sql
.
Tx
)
error
{
...
...
store/sqlite/memo_relation.go
0 → 100644
View file @
acbde4fb
package
sqlite
import
(
"context"
"strings"
"github.com/usememos/memos/store"
)
func
(
d
*
Driver
)
UpsertMemoRelation
(
ctx
context
.
Context
,
create
*
store
.
MemoRelation
)
(
*
store
.
MemoRelation
,
error
)
{
stmt
:=
`
INSERT INTO memo_relation (
memo_id,
related_memo_id,
type
)
VALUES (?, ?, ?)
ON CONFLICT (memo_id, related_memo_id, type) DO UPDATE SET
type = EXCLUDED.type
RETURNING memo_id, related_memo_id, type
`
memoRelation
:=
&
store
.
MemoRelation
{}
if
err
:=
d
.
db
.
QueryRowContext
(
ctx
,
stmt
,
create
.
MemoID
,
create
.
RelatedMemoID
,
create
.
Type
,
)
.
Scan
(
&
memoRelation
.
MemoID
,
&
memoRelation
.
RelatedMemoID
,
&
memoRelation
.
Type
,
);
err
!=
nil
{
return
nil
,
err
}
return
memoRelation
,
nil
}
func
(
d
*
Driver
)
ListMemoRelations
(
ctx
context
.
Context
,
find
*
store
.
FindMemoRelation
)
([]
*
store
.
MemoRelation
,
error
)
{
where
,
args
:=
[]
string
{
"TRUE"
},
[]
any
{}
if
find
.
MemoID
!=
nil
{
where
,
args
=
append
(
where
,
"memo_id = ?"
),
append
(
args
,
find
.
MemoID
)
}
if
find
.
RelatedMemoID
!=
nil
{
where
,
args
=
append
(
where
,
"related_memo_id = ?"
),
append
(
args
,
find
.
RelatedMemoID
)
}
if
find
.
Type
!=
nil
{
where
,
args
=
append
(
where
,
"type = ?"
),
append
(
args
,
find
.
Type
)
}
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
{
return
nil
,
err
}
defer
rows
.
Close
()
list
:=
[]
*
store
.
MemoRelation
{}
for
rows
.
Next
()
{
memoRelation
:=
&
store
.
MemoRelation
{}
if
err
:=
rows
.
Scan
(
&
memoRelation
.
MemoID
,
&
memoRelation
.
RelatedMemoID
,
&
memoRelation
.
Type
,
);
err
!=
nil
{
return
nil
,
err
}
list
=
append
(
list
,
memoRelation
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
}
return
list
,
nil
}
func
(
d
*
Driver
)
DeleteMemoRelation
(
ctx
context
.
Context
,
delete
*
store
.
DeleteMemoRelation
)
error
{
where
,
args
:=
[]
string
{
"TRUE"
},
[]
any
{}
if
delete
.
MemoID
!=
nil
{
where
,
args
=
append
(
where
,
"memo_id = ?"
),
append
(
args
,
delete
.
MemoID
)
}
if
delete
.
RelatedMemoID
!=
nil
{
where
,
args
=
append
(
where
,
"related_memo_id = ?"
),
append
(
args
,
delete
.
RelatedMemoID
)
}
if
delete
.
Type
!=
nil
{
where
,
args
=
append
(
where
,
"type = ?"
),
append
(
args
,
delete
.
Type
)
}
stmt
:=
`
DELETE FROM memo_relation
WHERE `
+
strings
.
Join
(
where
,
" AND "
)
result
,
err
:=
d
.
db
.
ExecContext
(
ctx
,
stmt
,
args
...
)
if
err
!=
nil
{
return
err
}
if
_
,
err
=
result
.
RowsAffected
();
err
!=
nil
{
return
err
}
return
nil
}
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